Mam trzy strony (fragmenty) w ViewPager, jednak chcę wyświetlić element menu tylko dla dwóch z tych stron.
Kod podany w poprzedniej odpowiedzi SO nie wydaje się działać:
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser == true) { }
else if (isVisibleToUser == false) { }
}
Eclipse mówi, że @Override nie jest potrzebne i nie można ustawić super. Nigdy nie jest wywoływany przez system, a nawet gdyby tak było, jak określić, która strona jest w tej chwili wyświetlana? Czy mogę tu uzyskać pomoc?
android
android-widget
android-viewpager
Andrew Rabon
źródło
źródło
Odpowiedzi:
Użyj
ViewPager.onPageChangeListener
:źródło
ViewPager.setOnPageChangeListener
jest teraz przestarzała. Teraz musisz użyćViewPager.addOnPageChangeListener
zamiast tego.na przykład,
źródło
addOnPageChangeListener
.ViewPager.SimpleOnPageChangeListener
aViewPager.OnPageChangeListener
co wspomnieć powyżej?Możesz także użyć
ViewPager.SimpleOnPageChangeListener
zamiastViewPager.OnPageChangeListener
i przesłonić tylko te metody, których chcesz użyć.Mam nadzieję, że to pomoże :)
Edycja: zgodnie z interfejsami API systemu Android
setOnPageChangeListener (ViewPager.OnPageChangeListener listener)
jest przestarzała. Sprawdź ten adres URL: - Android ViewPager APIźródło
mViewPager.setOnPageChangeListener();
jest przestarzała teraz, ten jest w porządku pracy.Użytkownicy Kotlin ,
Aktualizacja 2020 dla ViewPager2
źródło
W przypadku ViewPager2,
gdzie
OnPageChangeCallback
jest klasą statyczną z trzema metodami:źródło