Определите, когда ViewPager изменяет страницы
У меня есть три страницы (фрагменты) внутри ViewPager, однако я хочу отобразить только пункт меню для двух из этих страниц.
код, приведенный в предыдущем ответе SO, похоже, не работает:
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser == true) { }
else if (isVisibleToUser == false) { }
}
Eclipse говорит, что @ Override не требуется, и super не может быть установлен. Он никогда не вызывается системой, и даже если бы это было так, как бы я определил, какая страница показывается в данный момент? Могу я здесь чем-нибудь помочь?
4 ответа:
использовать
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
теперь устарел. Теперь вам нужно использоватьViewPager.addOnPageChangeListener
вместо.например,
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) { } });
вы также можете использовать
ViewPager.SimpleOnPageChangeListener
вместоViewPager.OnPageChangeListener
и переопределить только те методы, которые вы хотите использовать.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) { } });
надеюсь, что это поможет :)
Edit: Согласно API для Андроид,
setOnPageChangeListener (ViewPager.OnPageChangeListener listener)
- Это исключено. Пожалуйста, проверьте этот адрес:- Android ViewPager API