这是我遇到的问题。我有一个活动A,它具有片段F,该片段F包含在FragmentPagerAdapter FPA中,该片段在视图V中。(A-> V-> FPA-> F)
当A被销毁(或在这种情况下,被换出)时,F被附加,并在FPA中,而FPA在V中。但是,当A被重新创建(例如,有人将后退按钮击回到活动中)时,V和FPA不存在,因此重新创建了F(处于附加状态!),但是创建了一个不存在的东西,因此它根本不在视图层次结构中。然后,当FPA尝试在此片段上实例化State时,它将尝试将其附加,这没有任何作用,因为它已经附加在稀薄的空气中。
显然,有几种方法可以解决此问题(例如,活动的onCreate中存在V和FPA,因此,在创建该片段时,该片段就可以使用),但是我想继续懒惰地创建FPA和仅在需要时才使用V。
因此,似乎需要将F的状态更新为在onDestroy()中分离。但是,状态保存在onPause()中,这意味着我有点不走运。
有没有一种方法可以更新A的onDestroy()中F的保存状态?有没有办法说“如果活动被破坏,不要补水”?还有其他我没有考虑的明显思考方式吗?感觉就像我在以错误的方式处理事情。
最佳答案
我在FragmentPagers
上遇到了麻烦。我要做的是在Activity onCreate()
中传递一个空捆绑,然后每次创建时从头开始创建所有内容。像这样:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(null);
// do my stuff
}
这样,在重新创建活动时,片段将不会继续传递。