Estoy escribiendo una aplicación que utiliza la FragmentPagerAdapter. Los fragmentos en el adaptador necesita ser actualizado de acuerdo a datos externos – pero eso no sucede. Me di cuenta de que el fragmento clases son sólo instancias de una vez, en el getItem función:

@Override
public Fragment getItem(int position) {
    TabInfo info = mTabs.get(position);
    return Fragment.instantiate(mContext, info.clss.getName(),
                info.args);
}

Incluso si puedo eliminar la clase y utilizar uno nuevo, nada ayuda – este método sólo se llama una vez, la primera vez que la ficha se rellena, y nunca más. Alguien tiene una idea de por qué?

Gracias!

3 Comentarios

  1. 49

    getItem será llamado cada vez que el adaptador necesita un fragmento y fragmento no existe.

    Si el fragmento ya existe en la FragmentManager entonces no hay necesidad de crear instancias de ella y getItem no necesita ser llamado.

    De actualizar un fragmento que usted necesita para recuperar de los FragmentManager o el adaptador y manipular en consecuencia.

    Por defecto, el viewpager va a crear fragmentos de la página visible y el de al lado. I. e para empezar, los fragmentos en la posición 1 y 2. Cuando pase a la página 2, el fragmento en la posición 3 se creará etc

    • es posible destruir un fragmento?
    • stackoverflow.com/questions/10396321/…
    • stackoverflow.com/questions/15212309/…
    • El primer enlace que te dio resuelto el problema, para mí. Gracias!
    • puede usted por favor decirme cómo se puede resolver este problema porque también tengo el mismo problema.
    • +1 por la info acerca de ViewPager la creación de fragmentos de la página visible y el de al lado. Me preguntaba por qué seguía viendo las cosas en la ficha 1 de disparo cuando sólo ficha 0 era visible.
    • En público Fragmento getItem(int posición) es la posición 0? @Kuffs
    • Yo creo que sí, pero no miró durante un rato, de modo que podría estar equivocado
    • «Si el fragmento ya existe en la FragmentManager» ¿cómo es exactamente esta determinado? es decir. ¿cómo saber exactamente lo que está buscando?
    • A partir de la documentación "ViewPager associates each page with a key Object instead of working with Views directly. This key is used to track and uniquely identify a given page independent of its position in the adapter." developer.android.com/reference/android/support/v4/view/…

  2. 17

    Para ser más específico que la respuesta anterior (lo cual es correcto!), getItem es llamado por FragmentPagerAdapter del instantiateItem(ViewGroup contenedor, int posición) método. Sólo en caso de que la ayuda 🙂

  3. 1

    Simple uso FragmentStatePagerAdapter en lugar de FragmentPagerAdapter

    • Por qué? EXPLICAR………….
    • Sé que esto es muy viejo, pero enfermo acaba de agregar en cualquier caso. Fragmento de buscapersonas adaptador sostiene en los fragmentos de la memoria, que se utiliza si hay sólo un par de pestañas. Fragmento estado de buscapersonas adaptador de destruir el fragmento de instancia en cada dedo para guardar en la memoria

Dejar respuesta

Please enter your comment!
Please enter your name here