【发布时间】: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