134 votes

Prévenir ViewPager de détruire hors des vues d'écran

J'ai un ViewPager accroché à un FragmentPagerAdapter qui est l'affichage en trois fragments. Le ViewPager semble détruire hébergé fragment de la vue lorsqu'il est plus qu'un simple glissement de doigt loin de la position actuelle.

Ces points de vue sont tous de simples listes et cette optimisation est complètement inutile, donc, je tiens à le désactiver. Il est à l'origine de certains problèmes visuels, parce que les listes de présentation des animations appliquées et ces animations sont relus après qu'ils ont été détruits et recréés. Il montre aussi la barre de défilement animation d'intro à chaque fois (lorsque la barre de défilement est brièvement visible pour indiquer que le défilement est possible), ce qui peut être source de distraction, et la position de défilement est perdue dans le processus.

Il également ne pas charger le troisième fragment jusqu'à ce que le premier balayage arrive, ce qui est problématique, parce que chaque fragment gère ses propres appels de service et je préfère avoir tous les trois pompiers en même temps lorsque l'activité charges. Avoir le troisième appel de service retardée est pas l'idéal.

Est-il possible de convaincre ViewPager pour arrêter ce problème, et il suffit de garder tous mes fragments de mémoire?

338voto

David Caunt Points 30636

Dans la révision 4 de l'accompagnement, une méthode a été ajouté à ViewPager qui vous permet de spécifier le nombre de pages à l'écran à utiliser, plutôt que la valeur par défaut est 1.

Dans votre cas, vous voulez spécifier 2, de sorte que lorsque vous êtes sur la troisième page, le premier n'est pas détruit, et vice-versa.

mViewPager = (ViewPager)findViewById(R.id.pager);
mViewPager.setOffscreenPageLimit(2);

3voto

Percy Vega Points 61

"Définir le nombre de pages qui doivent être conservés pour chaque côté de la page en cours dans le point de vue de la hiérarchie dans un état d'inactivité. Pages au-delà de cette limite sera recréé à partir de l'adaptateur en cas de besoin."

http://developer.android.com/reference/android/support/v4/view/ViewPager.html#setOffscreenPageLimit(int)

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