Android FragmentPagerAdapter:java.lang.IllegalStateException:应用程序的PagerAdapter更改了适配器的内容

Android FragmentPagerAdapter:java.lang.IllegalStateException:应用程序的PagerAdapter更改了适配器的内容,android,android-fragments,android-viewpager,navigation-drawer,Android,Android Fragments,Android Viewpager,Navigation Drawer,正在尝试使用导航抽屉中的视图寻呼机创建应用程序。我有从导航中选择的选项,根据外部选择,我必须在视图寻呼机中填充不同数量的片段 我已经使用教程创建了导航抽屉,并与谷歌文档分开查看寻呼机。根据文档,视图寻呼机有固定数量的片段。如果我硬编码的方式,一切都很好 但是,当我试图根据左选择使其动态时,我得到了非法的状态异常 例如,我实现了fragmentstatepageradapter public class innerFragment extends Fragment { Sections

正在尝试使用导航抽屉中的视图寻呼机创建应用程序。我有从导航中选择的选项,根据外部选择,我必须在视图寻呼机中填充不同数量的片段

我已经使用教程创建了导航抽屉,并与谷歌文档分开查看寻呼机。根据文档,视图寻呼机有固定数量的片段。如果我硬编码的方式,一切都很好

但是,当我试图根据左选择使其动态时,我得到了非法的状态异常

例如,我实现了fragmentstatepageradapter

 public class innerFragment extends Fragment {

    SectionsPagerAdapter mSectionsPagerAdapter;
    ViewPager mViewPager;
    public static final String active_outer_option = "section_number";

    public innerFragment() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_outer, container,
                false);

        Log.d("logs", "onCreateView:innerFragment()");

        mSectionsPagerAdapter = new SectionsPagerAdapter(getFragmentManager());

        // Set up the ViewPager with the sections adapter.
        mViewPager = (ViewPager) rootView.findViewById(R.id.pager);
        mViewPager.setAdapter(mSectionsPagerAdapter);

        return rootView;
    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        ((MainActivity) activity).onSectionAttached(Integer
                .parseInt(getArguments().getString(active_outer_option)));
        Log.d("logs", "onAttach:innerFragment()");
    }

    public class SectionsPagerAdapter extends FragmentStatePagerAdapter {
        private int active_outer_option= 0;

        public SectionsPagerAdapter(FragmentManager fm) {
            super(fm);

        }

        @Override
        public Fragment getItem(int position) {
            Log.d("logs", "getItem(int " + position + ")");

            active_outer_option = position;
            Bundle b = new Bundle();
            b.putString("section_number", "" + position);
            DummySectionFragment fragment = new DummySectionFragment();
            fragment.setArguments(b);
            return fragment;
        }

        @Override
        public int getCount() {
            switch (active_outer_option) {
            case 0:
                return 9;
            case 1:
                return 2;
            case 2:
                return 2;
            case 3:
                return 2;
            case 4:
                return 4;
            default:
                return 0;
            }
        }

        @Override
        public CharSequence getPageTitle(int position) {
            Log.d("logs", "getPageTitle(int " + position + ")");
            return "OP " + String.valueOf(position);
        }

    }

    public static class DummySectionFragment extends Fragment {
        public static final String ARG_SECTION_NUMBER = "section_number";

        public DummySectionFragment() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {

            Log.d("logs", "onCreateView:DummySectionFragment()");

            View rootView = inflater.inflate(R.layout.fragment_inner,
                    container, false);
            TextView dummyTextView = (TextView) rootView
                    .findViewById(R.id.section_label);
            dummyTextView.setText(getArguments().getString(ARG_SECTION_NUMBER));
            return rootView;
        }

    }

}
运行此应用程序时,其应用程序停止工作,异常为:

java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged! Expected adapter item count: 9, found: 2 Pager id: com.xxx.xxx:id/pager Pager class: class android.support.v4.view.ViewPager Problematic adapter: class com.xxx.xxx.innerFragment$SectionsPagerAdapter
知道那个异常和代码有什么问题吗

编辑:

从调试开始,一切正常,使用索引0和1调用gettitle两次,然后使用索引和获取异常调用getcount


这有什么意义吗?

从异常情况来看,您似乎从适配器中删除了一些项目。@Sufian i根本没有更新适配器。我可以说的是,第一个外部选项将给出9个内部选项片段,第二个外部选项将给出2个内部选项片段。我从文档中读到的内容是,view pager加载第二页进行分页。在我的例子中,这可能是一个问题吗?我不确定,但是我想说,根据active\u outer\u选项的值,getCount返回不同的值。PagerAdapter不喜欢这样,因此抛出了异常。是否要在其中显示分段列表视图?我已经解决了。这是商业逻辑上的错误。正如我所料,activity正在尝试在view pager中加载第二个视图,我将该索引设置为active_outer_选项,这是错误的。无论如何,谢谢你们。