Search code examples
androidandroid-widgetandroid-viewpager

Determine when a ViewPager changes pages


I have three pages (Fragments) inside a ViewPager, however I only want to display a menu item for two of those pages.

The code given in a previous SO answer does not seem to work:

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);

    if (isVisibleToUser == true) { }
    else if (isVisibleToUser == false) {  }

}

Eclipse says @Override isn't needed and super can't be set. It's never called by the system, and even if it was how would I determine which page was being shown at the moment? Could I have some help here?


Solution

  • Use the 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.
        }
    });