Je vais garder la question aussi courte et simple que possible.
View activeView = mViewPager.getChildAt(mViewPager.getCurrentItem());
renvoie la vue enfant lorsque l'élément en cours est 0 et 1. Mais si l'élément en cours est 2, il retourne null
. Pourquoi donc?
edit: Laissez-moi me reformuler. Comment obtenir la vue enfant d'un ViewPager à un emplacement donné?
getChildAt(int)
n'était pas la bonne approche. Ce que j'ai fait, c'est récupérer l'adaptateur utilisé dans ViewPager et y trouver mes vues:
adapter = mViewPager.getAdapter();
Fragment fragment = adapter.getItem(mViewPager.getCurrentItem());
View activeView = fragment.getView();
Comme déjà indiqué, le viewPager ne contiendra que l'enfant actuel et les enfants adjacents (currentItem () +/- 1), sauf indication contraire via setOffscreenPageLimit()
.
Votre adaptateur de pageur de vues contient au maximum 2 pages, soit 2 vues/fragments, le reste est recyclé. Dans d'autres cas, ce que vous n'avez pas mentionné, c'est que vous pourriez avoir 2 pages/vues dans le ViewPager.
Veuillez regarder à mViewPager.setOffscreenPageLimit()
Ajouter une balise à la vue de retour de Viewpager.
Le lien ci-dessous vous aidera: https://stackoverflow.com/a/20186828/1271891
Au cours de mes efforts pour trouver un moyen de décorer les vues Android, je pense avoir défini une solution alternative au problème de l'OP que j'ai documentée dans mon blog . Je suis lié à cela car le code semble être un peu trop pour tout inclure ici.
La solution que je propose:
null
si cette vue n'est pas chargée, ou la vue correspondante.(Cette question est très simple pour celui-ci dans lequel j'ai posté la même réponse ).