我有android.support.v4.app.FragmentStatePagerAdapter
,其中包含大约1-10个根据情况而变化的片段。
每个片段在其视图中定义了GridView
。
如果用户将应用程序置于后台,则启动另一个应用程序,然后返回到我的应用程序。在某些设备上,只需删除片段,app就会显示空白的空白屏幕。我尝试更改为FragmentPagerAdapter
,但会导致崩溃。它抛出java.lang.IllegalStateException: Activity has been destroyed error.
我无法理解系统周围的混乱,因为片段包含在活动中,只有创建的活动才能委托通知片段的调用。
更新1:
从进一步调试开始,app似乎抛出了IllegalStateException
在FragmentPagerAdapater中:
java.lang.IllegalStateException:活动已被销毁 在android.support.v4.app.FragmentManagerImpl.enqueueAction(SourceFile:1358) 在android.support.v4.app.BackStackRecord.commitInternal(SourceFile:595) 在android.support.v4.app.BackStackRecord.commitAllowingStateLoss(SourceFile:578) 在android.support.v4.app.FragmentPagerAdapter.finishUpdate(SourceFile:139) 在android.support.v4.view.ViewPager.setAdapter(SourceFile:415)
在FragmentStatePagerAdapter中
java.lang.IllegalStateException:键f1:index 1不再存在Fragement 在android.support.v4.app.FragmentManagerImpl.getFragment(SourceFile:564) 在android.support.v4.app.FragmentStatePagerAdapter.getItem(SourceFile:211) restoreState 在android.support.v4.view.ViewPager.setAdapter(SourceFile:428)
非常感谢任何帮助。
答案 0 :(得分:0)
我想我迟到了,但似乎如果你使用的是FragmentPagerAdapter
,它就不会在活动被销毁后重新创建,并且它会尝试引用旧的被破坏的活动实例。例如,如果您将该适配器声明为static
,则可以这样做。尝试更改代码,以便始终在每次创建活动时重新创建适配器。