【问题标题】:savedInstanceState bundle is always null after device rotation设备旋转后,savedInstanceState 包始终为空
【发布时间】:2022-01-15 13:34:40
【问题描述】:

(我知道这个问题以前被问过很多次,但我读过的答案都没有帮助。)

旋转我的设备后,我的片段被重新创建,但在 onCreate/onViewStateRestored/etc 中收到了 Bundle。始终为空。片段有一个有效的 ID,retainInstance 设置为 false。

我正在写入提供给 onSaveInstanceState 方法的 Bundle,该方法在设备旋转时按预期调用。在轮换之后,所有预期的生命周期回调也会被调用(onCreate、onActivityCreated、onViewStateRestored 等)。但是,提供的 Bundle 在每种情况下都是 null。

我读到的关于这个主题的所有内容都表明片段应该接收在 onSaveInstanceState 中写入的 Bundle。我唯一能想到的可能不寻常的是片段位于导航图组件内。请注意,我没有在活动中覆盖 onSaveInstanceState。

什么可能导致我的片段的 Bundle 在旋转后为空?

【问题讨论】:

  • 截至 2018 年 12 月的 Fragment 1.1.0-alpha03,恢复的片段总是被赋予非空的 Bundle。您使用的是什么版本的 Fragments(请包括您的 build.gradle 文件的 dependencies 部分)?请同时包含您的 Activity 的布局 XML 文件和 onCreate() 方法。
  • "androidx.navigation:navigation-fragment:2.3.1"

标签: android android-fragments android-lifecycle screen-rotation


【解决方案1】:

事实证明,在 Activity 中覆盖了 onCreate,并将 null 而不是 savedInstanceState 传递给 super.onCreate

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-19
    • 2013-12-31
    • 1970-01-01
    • 1970-01-01
    • 2019-09-12
    • 2014-02-21
    相关资源
    最近更新 更多