J'ai trois pages (Fragments) dans un ViewPager, mais je souhaite uniquement afficher un élément de menu pour deux de ces pages.
Le code donné dans une précédente réponse SO ne semble pas fonctionner:
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser == true) { }
else if (isVisibleToUser == false) { }
}
Eclipse dit que @Override n'est pas nécessaire et que super ne peut pas être défini. Il n'est jamais appelé par le système, et même si c'était comment pourrais-je déterminer quelle page était affichée pour le moment? Puis-je avoir de l'aide ici?
Réponses:
Utilisez le
ViewPager.onPageChangeListener
:la source
ViewPager.setOnPageChangeListener
est désormais obsolète. Vous devez maintenant utiliser à laViewPager.addOnPageChangeListener
place.par exemple,
la source
addOnPageChangeListener
.ViewPager.SimpleOnPageChangeListener
etViewPager.OnPageChangeListener
quelle est la mention ci-dessus?Vous pouvez également utiliser à la
ViewPager.SimpleOnPageChangeListener
placeViewPager.OnPageChangeListener
et remplacer uniquement les méthodes que vous souhaitez utiliser.J'espère que cette aide :)
Edit: selon les API Android,
setOnPageChangeListener (ViewPager.OnPageChangeListener listener)
est obsolète. Veuillez vérifier cette URL: - API Android ViewPagerla source
mViewPager.setOnPageChangeListener();
est maintenant obsolète, celui-ci fonctionne correctement.Utilisateurs de Kotlin ,
Mise à jour 2020 pour ViewPager2
la source
Pour ViewPager2,
où
OnPageChangeCallback
est une classe statique avec trois méthodes:la source