【问题标题】:Fragment lifecycle error in 4.4, onCreateView() is called on multiple fragments same time4.4中的Fragment生命周期错误,onCreateView()同时在多个Fragment上被调用
【发布时间】:2015-05-21 13:33:22
【问题描述】:

我收到错误:

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

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

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

2.) 用户按下 B2 片段上的 Home Key 并进入主屏幕。

3.) 用户长按 Home 键,从 Android 的 Recents Activity 中打开此应用

这里出现错误,如图中 1 为蓝色

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

我还使用onSaveInstanceState() 保存了我的B2 状态并使用onActivityCreated() 恢复,但这种方法不起作用,因为onActivityCreated() 首先被称为B2,然后是A1。因此,我的 B2 片段在前台屏幕上不可见。取而代之的是,A1 在屏幕上可见

注意:

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

相同的代码在 Android 5.0+ (Lollipop) 中运行正确,但在 4.4(和更早版本)中出现错误

任何人都可以提出任何解决方法吗?

【问题讨论】:

    标签: android android-fragments fragment-lifecycle


    【解决方案1】:

    问题是由于开发人员设置 -> 不保留活动(用户离开后立即销毁每个活动)

    出现异常行为是因为我已将这个选项开启

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

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

    制造商默认为用户关闭此选项。

    这个选项有优缺点描述:Here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-14
      • 2014-01-06
      相关资源
      最近更新 更多