3

Is Fragment in ViewPager has a equivalent method like OnPageSelected() Or OnPageShow() ? I should do something when a specific page is showing?


I set hidden state of each Fragment in onPageScrolled() In page adapter, and I wonder why onHiddenChanged() not be called?

// In PageAdapter(extends FragmentPagerAdapter)

    public void onHiddenChanged(int arg0)
    {
        for (int i = 0; i < getCount(); i++) {
            if (i == arg0) {
                mAdapter.getItem(arg0).onHiddenChanged(true);
            } else {
                mAdapter.getItem(arg0).onHiddenChanged(false);
            }
        }
    }

// in PageActivity(extends FragmentActivity)

public void onPageSelected(int arg0)
{
    mAdapter.onHiddenChanged(arg0);
}
Slick Slime
  • 649
  • 7
  • 19
thecr0w
  • 2,148
  • 4
  • 33
  • 59
  • Solved!@see this:http://stackoverflow.com/questions/10024739/how-to-determine-when-fragment-becomes-visible-in-viewpager/12523627#12523627 – thecr0w Dec 27 '13 at 01:56

2 Answers2

2

In Android for ViewPager there is a listener called ViewPager.OnPageChangeListener which has methods like

onPageScrollStateChanged(int state),

onPageScrolled(int position, float positionOffset, int positionOffsetPixels) , 

onPageSelected(int position)

If you want to do some specific task for the page you need to write ViewPager.OnPageChangeListener and override onPageSelected(int position) method.

for more details see here

Zombie
  • 1,965
  • 2
  • 20
  • 34
  • Solved! @see:http://stackoverflow.com/questions/10024739/how-to-determine-when-fragment-becomes-visible-in-viewpager/12523627#12523627 – thecr0w Dec 27 '13 at 01:57
1

You can use OnPageChangeListener. You get a callback when the page is changed, example:

mViewPager.setOnPageChangeListener(new OnPageChangeListener() {

    @Override
    public void onPageSelected(int position) {
        // this will be called when the page is changed
    }

    @Override
    public void onPageScrolled(int arg0, float arg1, int arg2) {
    }

    @Override
    public void onPageScrollStateChanged(int arg0) {
    }
});
aromero
  • 25,681
  • 6
  • 57
  • 79