在某些情况下,在使用FragmentStatePagerAdapter的 Activity 的onResume()中,我得到了这个信息。使用设备的后退按钮时。不总是。不可复制。

我正在使用最新版本(8)的支持包v4。

已经用Google搜索过,没有找到有效的答案。

在源代码中查找它,将其抛出:FragmentManager.java

@Override
public void putFragment(Bundle bundle, String key, Fragment fragment) {
    if (fragment.mIndex < 0) {
        throw new IllegalStateException("Fragment " + fragment
                + " is not currently in the FragmentManager");
    }
    bundle.putInt(key, fragment.mIndex);
}

但是为什么片段索引小于0?

实例化片段的代码:
@Override
public Fragment getItem(int position) {
    Fragment fragment = null;

    switch(position) {
        case 0:
            fragment = MyFragment.newInstance(param1);
            break;
        case 1:
            fragment = MyFragment2.newInstance(param2, param3);
            break;
    }
    return fragment;
}

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

最佳答案

如果您的ViewPager布置在一个片段(不是 Activity )中:
mViewPager.setAdapter(new MyFragmentStatePagerAdapter(getChildFragmentManager()));

关于android - FragmentStatePagerAdapter IllegalStateException : <MyFragment> is not currently in the FragmentManager,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11296411/

10-10 17:22