android android-fragments android-viewpager fragmentpageradapter

Fragmentos anidados y problemas de ViewPager en Android



android-fragments android-viewpager (0)

Estoy usando un FragmentStatePagerAdapter en combinación con un buscapersonas, que está anidado en un fragmento en Android. Por lo tanto, estoy usando ChildFragmentManager en combinación con FragmentStatePagerAdapter para crear mis fragmentos.

Hasta aquí todo bien, pero aquí está el problema:

  • Si abro una actividad diferente sin finalizar la actividad que hospeda el fragmento con el buscapersonas y luego lo reanudo, el fragmento que se seleccionó en ViewPager está vacío. Si cambio el fragmento en ViewPager antes de abrir la actividad diferente, este problema no aparece. Después de volver y ver el Fragment vacío en ViewPager, todavía puedo cambiar los próximos Fragmentos, pero si trato de volver al Fragment vacío, obtengo una NullPointerException. Este problema no ocurre si cambio entre el Fragmento que hospeda ViewPager y un Fragmento diferente o si cambio las orientaciones.

  • Si utilizo FragmentManager en lugar de ChildFragmentManager, no tengo este problema cuando cambio a una actividad diferente, pero ocurrirá si cambio entre el alojamiento y un fragmento diferente o si cambio la orientación.

Así que esto es lo que ya intenté sin éxito: * Use el adaptador FragmentStatePagerAdapter y FragmentPagerAdapter * Use setRetainedInstance (verdadero y falso) * Use getChildFragmentManager () y getFragmentManager () * Anule getItemPosition () devuelva POSTION_NONE y use notifyDataChanged () en onResume ()

Lo único que está haciendo el truco es recrear el PagerAdapter en onResume () y reiniciar el ViewPager, pero creo que es una mala práctica ya que todo debe ser recreado.

Entonces, ¿hay alguien que pueda explicarme cómo debería ser una implementación correcta, o por qué los fragmentos pueden quedar vacíos (no son nulos, lo comprobé). Estoy buscando una solución más elegante en lugar de volver a crear todo cada vez que reanudo mi actividad.

Cualquier ayuda es muy apreciada.