我知道这听起来像是FragmentStatePagerAdapter IllegalStateException: <MyFragment> is not currently in the FragmentManager的重复,但他提供的解决方案对我的情况不适用。
我偶尔会遇到以下崩溃:
java.lang.RuntimeException: Unable to pause activity {MyActivity}:
...
Caused by: java.lang.IllegalStateException: Fragment MyFragment {40648258 id=0x7f070051} is not currently in the FragmentManager at android.support.v4.app.FragmentManagerImpl.putFragment(MT:516) at android.support.v4.app.FragmentStatePagerAdapter.saveState(MT:185) at android.support.v4.view.ViewPager.onSaveInstanceState(MT:881)
...
at android.view.View.saveHierarchyState(View.java:6238) at com.android.internal.policy.impl.PhoneWindow.saveHierarchyState(PhoneWindow.java:1522) at android.app.Activity.onSaveInstanceState(Activity.java:1138) at android.support.v4.app.FragmentActivity.onSaveInstanceState(MT:480) at MyActivity.onSaveInstanceState(MT:336)
看起来这是我无法理解的来自FragmentStatePagerAdapter
的奇怪代码:
for (int i=0; i<mFragments.size(); i++) {
Fragment f = mFragments.get(i);
if (f != null) {
if (state == null) {
state = new Bundle();
}
String key = "f" + i;
mFragmentManager.putFragment(state, key, f);
}
}
看起来适配器可以从 mFragments
获取我的 Fragment
,但无法将其状态添加到 FragmentManager
。
我在我的测试设备上找不到任何重现此问题的方法,只是从一些用户那里收到了此问题。
我正在使用 support package v4。
有什么帮助吗? 谢谢。