Determine when a ViewPager changes pages

arjs picture arjs · Jul 2, 2012 · Viewed 128.5k times · Source

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?

Answer

Joru picture Joru · Jul 2, 2012

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