4.4中的片段生命周期错误,同时在多个片段上调用onCreateView()

时间:2015-05-21 13:33:22

标签: android android-fragments fragment-lifecycle

我收到错误:

错误的是,Android框架同时调用了多个片段的 onCreateView()

enter image description here

我有导航抽屉 3 FrameLayout:A,B,C

1。)通过B抽屉选项,用户到达B2片段。

2.)用户在 B2 片段上按主页键,然后转到主屏幕。

3。)用户长按主页,从Android的最近活动打开此应用程序

这里我收到的错误如图所示,蓝色 1

我的多个片段正在收到onCreate()onCreateView()onActivityCreated()个事件,所以我正在丢失 B2 的片段状态,我的应用程序转到默认片段是 A1 (从抽屉选项A打开)

我还使用onSaveInstanceState()保存了我的B2状态,并使用onActivityCreated()进行了恢复,但这种方法无法正常工作,因为onActivityCreated()首先调用B2,然后调用A1秒。所以,我的B2片段在前景的屏幕上不可见。取而代之的是,A1在屏幕上变得可见

注意:

我在所有情况下都使用.replace()来切换片段

此相同的代码在Android 5.0+(Lollipop)中运行正确,并在4.4(和旧版本)中出错

有人可以建议任何解决方法吗?

1 个答案:

答案 0 :(得分:0)

问题是由于开发者设置 - >不要保留活动(一旦用户离开就销毁每个活动)

enter image description here

异常行为即将发生,因为我已将此选项设为

当用户离开时,此选项将导致回调每个活动的onDestroy()方法。就我而言,我正在使用fragment所以事件发生了:

Fragment.onSaveInstanceState()
Activity.onStop()
Fragment.onDestroyView()
Activity.onDestroy()

此选项默认为manufecturers用户 OFF

此选项的优缺点描述为:Here