繁体   English   中英

发生配置更改时,如何不重置片段?

[英]How do I not reset my fragments when configuration changes happen?

所以我有这个活动为我创建了 4 个片段,它们是一个底部导航栏。 当我切换到暗模式或亮模式时,片段会重置并带我回到“主片段”,它基本上位于底部导航栏中。 所以我的问题是如何在更改 UI 模式时留在我所在的选项卡中? 同时当然也改变了片段的 UI 模式

最好的方法是让 Activity 用它的片段重新创建自己,可能需要一些配置更改才能显示正确的 UI。 你的用户总是有可能将你的应用程序移到后台,系统会在一段时间后杀死它,然后当你的用户回到它时 - 你会回到你的娱乐问题。 我在谈论它是为了防止您在 androidmanifest 中使用像 configChanges 这样的 hacks 来防止配置更改事件上的 Activity 重新创建。

但是回到重点:当配置更改破坏了您的 Activity 时,将在创建新的 Activity 实例时自动重新创建片段。 但是由你来保存它的一些状态。 我不确定您的 UI 和代码是什么样的。 保存和恢复状态的基本方法(如问题中的活动选项卡)是使用:Activity.onSaveInstanceState(Bundle) / Activity.onCreate(savedInstanceState: Bundle?) 和 Fragment.onSaveInstanceState(Bundle)/Fragment.onCreate(savedInstanceState) :捆绑?)机制。 您将相关变量保存在 onSaveInstanceState 中的包中,稍后在 onCreate 中使用 savedInstanceState 变量恢复此状态,但前提是它的非空值 - 第一次创建 Activity 时会发生这种情况。

这是一个广泛的主题,您可以在此处找到更多相关信息:

https://developer.android.com/topic/libraries/architecture/saving-states https://developer.android.com/guide/fragments/saving-state

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM