Я знаю, это звучит как дубликат FragmentStatePagerAdapter IllegalStateException: <MyFragment> в настоящее время не находится в FragmentManager но его решение не имеет отношения к моему делу.
Я получаю следующий сбой очень редко:
java.lang.RuntimeException: невозможно приостановить действие {MyActivity}:
...
Вызвано: java.lang.IllegalStateException: фрагмент MyFragment {40648258 id = 0x7f070051} в настоящее время не находится в FragmentManager at android.support.v4.app.FragmentManagerImpl.putFragment(MT: 516) at 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(МТ: 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
из mFragments
, но не может добавить его состояние в FragmentManager
.
Я не мог найти способ воссоздать это на своих тестовых устройствах, только получил это от некоторых пользователей.
Я использую пакет поддержки v4.
Любая помощь? Спасибо.