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 indiqué dans un réponse précédente SO ne semble pas fonctionner:
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser == true) { }
else if (isVisibleToUser == false) { }
}
Eclipse indique que @Override n'est pas nécessaire et que super ne peut pas être défini. Le système n’appelle jamais, et même s’il s’agissait de savoir comment déterminer quelle page était affichée en ce moment? Pourrais-je avoir de l'aide ici?
Utilisez le ViewPager.onPageChangeListener
:
viewPager.addOnPageChangeListener(new OnPageChangeListener() {
public void onPageScrollStateChanged(int state) {}
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}
public void onPageSelected(int position) {
// Check if this is the page you want.
}
});
ViewPager.setOnPageChangeListener
est obsolète maintenant. Vous devez maintenant utiliser ViewPager.addOnPageChangeListener
à la place.
par exemple,
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
Vous pouvez également utiliser ViewPager.SimpleOnPageChangeListener
au lieu de ViewPager.OnPageChangeListener
et remplacer uniquement les méthodes que vous souhaitez utiliser.
viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
// optional
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { }
// optional
@Override
public void onPageSelected(int position) { }
// optional
@Override
public void onPageScrollStateChanged(int state) { }
});
J'espère que cette aide :)
Modifier: Conformément aux API Android, _, setOnPageChangeListener (ViewPager.OnPageChangeListener listener)
est obsolète. Veuillez vérifier cette URL: - Android ViewPager API
Pour Kotlin,
view_pager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
override fun onPageScrollStateChanged(state: Int) {
}
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
}
override fun onPageSelected(position: Int) {
}
})