2

我有android.support.v4.app.FragmentStatePagerAdapter哪些托管大约 1-10 个片段,这些片段根据情况而有所不同。每个片段GridView在其视图中都有一个定义。

在此处输入图像描述

如果用户将应用程序置于后台,启动另一个应用程序,然后返回我的应用程序。在某些设备上,片段会被简单地删除,应用程序会导致空白屏幕。我尝试更改为FragmentPagerAdapter但导致崩溃情况。它抛出java.lang.IllegalStateException: Activity has been destroyed error.

我无法理解系统周围的混乱,因为片段包含在活动中,只有创建的活动才能委托通知片段的调用。

更新1:

从进一步调试来看,应用程序似乎抛出了 IllegalStateException

在 FragmentPagerAdapter 中时:

java.lang.IllegalStateException:活动已在 android.support.v4.app.BackStackRecord.commitInternal(SourceFile:595) 在 android.support.v4 的 android.support.v4.app.FragmentManagerImpl.enqueueAction(SourceFile:1358) 被破坏.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 的片段不再存在: android.support.v4.app.FragmentManagerImpl.getFragment(SourceFile:564) 的索引 1 在 android.support.v4.app.FragmentStatePagerAdapter.getItem(SourceFile:211)在 android.support.v4.view.ViewPager.setAdapter(SourceFile:428) 的 restoreState

任何帮助深表感谢。

4

1 回答 1

0

我想我迟到了,但似乎如果你使用 aFragmentPagerAdapter它不会在活动被销毁后重新创建,它会尝试引用旧的被破坏的活动实例。例如,如果您将该适配器声明为static. 尝试以这样一种方式更改您的代码,以便在每次创建活动时始终重新创建适配器。

于 2015-01-30T10:47:30.430 回答