更改片段后,OnPageChangeListener仍处于活动状态,导致IllegalStateException

时间:2013-12-03 10:55:23

标签: android android-viewpager listener illegalstateexception

将ViewPager替换为单个片段之后:

fragmentManager.beginTransaction ().replace ( R.id.content_frame, fragment ).commit ();

如果我向右滚动 - 这不应该是因为只有一个页面 - 我在 onPageSelected 上得到一个IllegalStateExceptio,因为显然OnPageChangeListener仍处于活动状态。

我该如何处理?

mViewPager.setOnPageChangeListener ( new ViewPager.OnPageChangeListener () {

        @Override
        public void onPageSelected ( int position ) {
            mActionBar.setSelectedNavigationItem ( position );
        }

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

        @Override
        public void onPageScrollStateChanged ( int arg0 ) {
        }
    } );

1 个答案:

答案 0 :(得分:0)

这是一个hackish解决方法。必须有一个更好的方法,但它的工作原理。要禁用分页,请将viewpager适配器设置为0页。

public class EmptyPagerAdapter extends FragmentStatePagerAdapter {

public EmptyPagerAdapter ( FragmentManager fm ) {
    super ( fm );
}

@Override
public Fragment getItem ( int index ) {
    return null;
}

@Override
public int getCount () {
    return 0;
}

}