【问题标题】:OnPageChangeListener still active after changing fragment, causes IllegalStateExceptionOnPageChangeListener 在更改片段后仍然处于活动状态,导致 IllegalStateException
【发布时间】:2013-12-03 19:15:34
【问题描述】:

将 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 ) {
        }
    } );

【问题讨论】:

    标签: android android-viewpager listener illegalstateexception


    【解决方案1】:

    这是一个骇人听闻的解决方法。必须有更好的方法,但它有效。要禁用分页,请将 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;
    }
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-18
      • 1970-01-01
      • 2020-05-28
      • 2011-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多