Interruptor ViewPager FragmentPagerAdapter

Tengo un ViewPager que es poblado por un FragmentPagerAdapter . Quiero cambiar del primer adaptador dos otros. El problema es que todas las páginas que se cargaron antes (al tener el primer adaptador) siguen siendo las antiguas.

Miré el código fuente de FragmentPagerAdapter y supongo que el problema se produce debido a la implementación de instatiateItem() . Usando la etiqueta, que tiene la posición y conatiner id en ella, el método comprueba si ya hay un Fragment en la posición. Cuando hay un Fragment con esta etiqueta se adjunta. El identificador y la posición del contenedor no cambian cuando se configura un nuevo adaptador para que encuentre el Fragment antiguo.

¿Conoces una manera de eliminar todos los fragmentos antiguos?

Me di cuenta de que la etiqueta Fragment utiliza un id, obtenido por getItemId() y no la posición. Para solucionar mi problema he sobreescribido getItemId() y uso diferentes ids diferentes en los diferentes FragmentPagerAdapter s.

 @Override public long getItemId(int position) { return mPagerId*100+position; } 

mPagerId es un entero único que se asigna en el constructor. Si tiene más de 100 páginas debe reemplazar 100 por 1000.

  • El menú deslizante bloquea el evento táctil en la vista superior
  • Android ViewPager con zoom de imagen
  • No se puede actualizar / actualizar listview en un fragmento de otro fragmento en ViewPager
  • ¿Cómo desplazar la vista web horizontalmente dentro de ViewPager?
  • Android ViewPager enfoca automáticamente WebView
  • Ver ciclo de vida del paginador y del fragmento
  • Android ViewPager que genera una excepción IndexOutOfBounds al configurar el elemento / página actual
  • Cambiar las pestañas que no funcionan al hacer clic en las pestañas con PagerSlidingTabStrips
  • Cómo utilizar el fragmento con Viewpager para páginas de desplazamiento
  • OnPageScrolled () no se llama
  • Determinar el fragmento visible en ViewPager
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.