onPageSelected ViewPager未在ViewPager.setCurrentItem之后调用

时间:2015-12-03 01:10:05

标签: android android-fragments android-viewpager

我的ViewPager有问题。在设置ViewPager.setCurrentItem之后,没有调用onPageSelected ViewPager的方法。这是我的代码:

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
    ...

    mMyFragmentPagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager());
            mViewPager.setAdapter(mMyFragmentPagerAdapter);
            mViewPager.setCurrentItem(999);

            mViewPager.addOnPageChangeListener(new OnPageChangeListener() {

                public void onPageSelected(int currentIndex) {
                    current_posisition_page = currentIndex;
                    PageFragment page = ((MyFragmentPagerAdapter) mViewPager.getAdapter()).getFragment(current_posisition_page);
                    page.checkSetContentData();
                }

                public void onPageScrolled(int arg0, float arg1, int arg2) { /* Nothing to do here */ }

                public void onPageScrollStateChanged(int arg0) { /* Nothing to do here */ }
            });


    ....

    }

上面的代码,当活动创建时,viewpager跳转到索引999页面。但是内部 onPageSelected 的代码不会自动调用。当我滑动索引988页面然后再返回索引999页面时它才起作用。那怎么解决呢?谢谢对我的Englsih。

2 个答案:

答案 0 :(得分:1)

尝试在调用setCurrentItem()之前添加侦听器。

答案 1 :(得分:0)

你应该这样做:

mViewPager.addOnPageChangeListener(this);
onPageChanged(999);
mViewPager.setCurrentItem(999);
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

}

@Override
public void onPageSelected(int position) {
    // your code
}

@Override
public void onPageScrollStateChanged(int state) {

}