Detectar cuando el fragmento se hace visible

¿Por qué no un duplicado? El mensaje sugerido sólo funciona para un viewpager o cuando onResume se llama.

Tengo un listfragment y un detailfragment. El fragmento de detalle se abre cuando se hace clic en un elemento de la lista. Logro esto ocultando el listfragment y mostrando el detailfragment. Cuando el usuario vuelve, vuelve al listfragment.

¿Cómo puedo detectar cuando el usuario vuelve a mi fragmento, o cuando mi fragmento es visible?

Tenga en cuenta que me gustaría seguir utilizando .hide () y show () y que estoy buscando un oyente o un onVisible para comprobar cuando el fragmento se hace visible, y no un método para comprobar si es visible.

EDITAR:
Como se señala en los comentarios, setUserVisbileHint() no se llama automáticamente, sino por el FragmentPageAdapter cuando se utiliza en un ViewPager.

Para el escenario descrito en la pregunta, onHiddenChanged(boolean hidden) http://developer.android.com/reference/android/app/Fragment.html#onHiddenChanged(boolean) es adecuado.
Como se indica en la documentación, el método se llama cada vez que el fragmento Fragmentos estado cambia, pero no en la configuración inicial del fragmento.


Puede utilizar setUserVisibleHint() http://developer.android.com/reference/android/support/v4/app/Fragment.html#setUserVisibleHint(boolean)

Si isVisibleToUser se establece en true se debe mostrar el fragmento.

Lea sobre el método: Fragmento. es visible()

Ejemplo:

 MyFragmentClass test = (MyFragmentClass) getSupportFragmentManager().findFragmentById("myFragnmentID"); if (test != null && test.isVisible()) { //VISIBLE! =) } else { //NOT VISIBLE =( } 

Puede enviar un evento a su actividad cuando se inicia el fragmento: https://www.inkling.com/read/programming-android-mednieks-1st/chapter-11/visualizing-the-fragment-life

Anulando el método onStart:

 @Override public void onStart() { super.onStart(); ((MyInterface)getActivity()).onFragmentIsVisible( this ); } 

Donde MyInterface es una interfaz:

 public MyInterface { public void onFragmentVisible( Fragment fragment ); } 

Y su actividad tendrá que implementarlo.

Esto podría ser más fácil con una biblioteca de bus de eventos como

  • Bus de eventos de RoboGuice
  • Otón
  • EventBus
  • ¿Por qué overridePendingTransition no tiene efecto cuando salto de Fragment a una nueva Activity?
  • IllegalStateException al reemplazar un fragmento
  • Configuración del título personalizado de ActionBar del fragmento
  • Cómo pasar Bundle de Fragment a Fragment
  • Ocultar pestañas en el visor
  • Fragmentos, AsyncTask y Oyentes
  • ¿Por qué mi fragmento onCreate se llama extensivamente cada vez que una página a través de mis aplicaciones viewPager?
  • OnCreateOptionsMenu () no se llama en Fragmento
  • ¿Cómo bloquear la orientación de los fragmentos sin bloquear la orientación de la actividad?
  • Android: Fragment y ViewPager comienza siempre en la primera posición
  • Cómo implementar la vista de búsqueda en la actividad (barra de acciones) cuando existe la vista de lista en el fragmento
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.