Cómo obtener el onWindowFocusChanged en Fragment?

Estoy usando el menú deslizante de Android usando el cajón de navegación . Sé que onWindowFocusChanged trabajo en MainActivity. ¿Cómo puedo comprobar si tiene un Foco en Fragmento?

Alguien dijo que puedo pasar el hasFocus para fragmentar, pero no sé cómo hacer esto. ¿Puede alguien darme algún código de ejemplo?

Quiero ejecutar ↓ esto en mi fragmento

 @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if (hasFocus) { //I need to do someing. method(); } } 

3 Solutions collect form web for “Cómo obtener el onWindowFocusChanged en Fragment?”

Puede crear una interfaz y todos sus fragmentos implementar esta interfaz, y dentro de su onWindowFocusChanged obtener el fragmento actual y pasar la llamada el método proporcionado por la interfaz.

Una interfaz de ejemplo para los fragmentos podría ser:

 public interface IOnFocusListenable { public void onWindowFocusChanged(boolean hasFocus); } 

Tus fragmentos tienen que implementar esta interfaz:

 public class MyFragment implement IOnFocusListenable { .... public void onWindowFocusChanged(boolean hasFocus) { ... } } 

Y en el onWindowFocusChanged de su actividad, puede hacer lo siguiente:

 public class MyActivity extends AppCompatActivity { @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if(currentFragment instanceOf IOnFocusListenable) { ((IOnFocusListenable) currentFragment).onWindowFocusChanged(hasFocus); } } } 

O crear un oyente y el fragmento activo se agrega al oyente. Por lo tanto, si el fragmento se hace visible, se suscribe a este listener, y cada vez que se llama al evento onWindowFocusChanged se llama a este listener.

Este enfoque es muy similar a lo anterior con la diferencia de que hay una lista de IOnFocusListenable 's y los que se activan en las actividades onWindowFocusChanged método

Desde la API 18 puedes usar este código directamente en tu Fragmento :

 final ViewTreeObserver viewTreeObserver = view.getViewTreeObserver(); viewTreeObserver.addOnWindowFocusChangeListener(new ViewTreeObserver.OnWindowFocusChangeListener() { @Override public void onWindowFocusChanged(final boolean hasFocus) { // do your stuff here } }); 

Donde puede obtener la vista en onViewCreated o simplemente llamar a getView () desde cualquier lugar.

Esta es la mejor solución

 view.post(new Runnable() { @Override public void run() { // do your stuff here } } ); 
  • Llamar setHasOptionsMenu (true) de un fragmento da como resultado múltiples llamadas a onCreateOptionsMenu en Activity
  • Fragmento no se muestra después de inflar
  • Cambiar fragmentos de forma programática
  • ¿Por qué necesito setRetainInstance o onSaveInstance si puedo usar android: configChanges = "keyboard | orientation | screenLayout"
  • Fragmento que se solapa en otro fragmento
  • Controlador de medios que aparece en los fragmentos equivocados y que comienza antes de la pestaña se muestra
  • Android getActivity () devuelve siempre nulo dentro del fragmento
  • Desactivar la animación de la transacción de fragmentos después de haberla confirmado
  • Obtener información de fragmentos visibles actuales en android dumpsys
  • PopBackStack hace que llamar a oncreateView del fragmento una y otra vez
  • Fragmento de actualización de ViewPager en el dispositivo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.