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

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

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

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

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

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

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