6 votes

Modèle de maintien pour ViewPager?

J'ai un ViewPager, et FragmentPagerAdpater et 3 Fragments pour implémenter une vue de balayage d'onglets. Est-ce que le ViewPager est censé "se souvenir" des 3 vues après le premier rendu ?

Mon problème est qu'après un certain temps, les mises en page des 3 vues sont "oubliées". Cela signifie que je dois les mettre à jour à nouveau et l'utilisateur verra la partie moche avant la mise à jour.

Y a-t-il un pattern de porteur de vue pour viewpager également ? Quelle technique puis-je utiliser pour conserver ces vues déjà rendues ou les empêcher d'être détruites ?

14voto

laalto Points 50581

Vous pouvez utiliser ViewPager setOffscreenPageLimit() pour contrôler combien de pages sont conservées en mémoire et pré-créées avant d'être défilées. Par défaut, sa valeur est de 1, ce qui signifie qu'il conservera la page actuelle en mémoire ainsi que les pages juste avant et après. En fonction de la taille de votre page (plein écran ou partiel), l'augmentation à par exemple 2 évitera que la page ne soit construite à l'écran.

2voto

Aalok Sharma Points 652

Dans votre adaptateur d'onglets, remplacez simplement la méthode destroyItem() et commentez l'instruction super

cela permettra de conserver l'instance de vos fragments et ils n'auront pas besoin de se charger encore et encore

@Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        // TODO généré la méthode
        // super.destroyItem(container, position, object);
    }

quelque chose comme ça.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X