FragmentPagerAdapter删除app resume上的片段

时间:2013-11-08 19:17:11

标签: android android-viewpager adapter empty-list

我有android.support.v4.app.FragmentStatePagerAdapter,其中包含大约1-10个根据情况而变化的片段。 每个片段在其视图中定义了GridView

enter image description here

如果用户将应用程序置于后台,则启动另一个应用程序,然后返回到我的应用程序。在某些设备上,只需删除片段,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)

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

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