我知道这听起来像是重复的FragmentStatePagerAdapter IllegalStateException: 当前不在 FragmentManager 中 https://stackoverflow.com/questions/11296411/fragmentstatepageradapter-illegalstateexception-myfragment-is-not-currently但他的解决方案与我的情况无关。
我很少遇到以下崩溃:
java.lang.RuntimeException:无法暂停活动 {MyActivity}:
...
引起原因:java.lang.IllegalStateException:Fragment MyFragment
{40648258 id=0x7f070051} 当前不在 FragmentManager 中
android.support.v4.app.FragmentManagerImpl.putFragment(MT:516)在
android.support.v4.app.FragmentStatePagerAdapter.saveState(MT:185)在
android.support.v4.view.ViewPager.onSaveInstanceState(MT:881)
...
在 android.view.View.saveHierarchyState(View.java:6238) 处
com.android.internal.policy.impl.PhoneWindow.saveHierarchyState(PhoneWindow.java:1522)
在 android.app.Activity.onSaveInstanceState(Activity.java:1138) 处
android.support.v4.app.FragmentActivity.onSaveInstanceState(MT:480)在
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);
}
}
看起来适配器得到了我的Fragment
from mFragments
但无法将其状态添加到FragmentManager
.
我找不到任何方法在我的测试设备上重新创建此内容,仅从某些用户那里收到此信息。
我正在使用支持包 v4。
有什么帮助吗?
谢谢。
The FragmentStatePagerAdapter
是一段可怕的代码,充满了谷歌承认或不承认的错误,所以我使用这段代码来修复这个特定的崩溃:
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// Yet another bug in FragmentStatePagerAdapter that destroyItem is called on fragment that hasnt been added. Need to catch
try {
super.destroyItem(container, position, object);
} catch (IllegalStateException ex) {
ex.printStackTrace();
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)