android - programacion - Detectar cuando el fragmento se hace visible
manual de programacion android pdf (3)
EDITAR:
Como se señaló en los comentarios, setUserVisbileHint()
no recibe llamadas automáticamente, sino que lo hace FragmentPageAdapter cuando se usa 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 invoca cada vez que cambia el estado oculto de los Fragmentos, pero no en la configuración inicial del Fragmento.
Podría usar setUserVisibleHint()
http://developer.android.com/reference/android/support/v4/app/Fragment.html#setUserVisibleHint(boolean)
Si isVisibleToUser
se establece en true
el fragmento debería mostrarse.
Esta pregunta ya tiene una respuesta aquí:
¿Por qué no un duplicado? La publicación sugerida solo funciona para un viewpager, o cuando se llama a onResume.
Tengo un fragmento de lista y un fragmento de detalle. El fragmento de detalle se abre cuando se hace clic en un elemento de la lista. Logro esto ocultando el fragmento de lista y mostrando el fragmento de detalle. Cuando el usuario vuelve, regresa al fragmento de lista.
¿Cómo puedo detectar cuándo el usuario vuelve a mi fragmento o cuando mi fragmento está visible?
Tenga en cuenta que me gustaría seguir utilizando .hide () y show () y que estoy buscando un oyente u onVisible para verificar cuándo se ve el fragmento, y no un método para verificar si está visible.
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 inicie el fragmento: https://www.inkling.com/read/programming-android-mednieks-1st/chapter-11/visualizing-the-fragment-life
Al anular 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 tu actividad deberás implementarla.
Esto podría ser más fácil con una biblioteca de bus de eventos como