发生配置更改时如何不重置我的片段?
Posted
技术标签:
【中文标题】发生配置更改时如何不重置我的片段?【英文标题】:How do I not reset my fragments when configuration changes happen? 【发布时间】:2021-09-28 20:09:15 【问题描述】:所以我有一个为我创建 4 个片段的活动,它们是一个底部导航栏。 当我更改为深色模式或浅色模式时,片段会重置并带我回到“主片段”,该片段基本上位于底部导航栏中。 所以我的问题是如何在更改 UI 模式时留在我所在的选项卡中?当然也改变了片段的 UI 模式
【问题讨论】:
【参考方案1】:最好的方法是让 Activity 使用其片段重新创建自己,可能需要进行一些配置更改才能显示正确的 UI。并且您的用户总是有可能将您的应用程序移至后台,系统会在一段时间后将其杀死,然后当您的用户返回它时 - 您将回到您的娱乐问题。我说它是为了防止您在 androidmanifest 中使用 configChanges 之类的黑客,这些黑客会阻止 Activity 在配置更改事件时重新创建。
但回到重点: 当配置更改破坏您的 Activity 时,将在创建新的 Activity 实例时自动重新创建片段。但它取决于你来保存它的一些状态。我不确定您的 UI 和代码是什么样的。保存和恢复状态的最基本方法(如您问题中的活动选项卡)是使用: Activity.onSaveInstanceState(Bundle) / Activity.onCreate(savedInstanceState: Bundle?) 和 Fragment.onSaveInstanceState(Bundle)/Fragment.onCreate(savedInstanceState :捆绑?)机制。您将相关变量保存在 onSaveInstanceState 中的捆绑包中,稍后在 onCreate 中使用 savedInstanceState 变量恢复此状态,但前提是它不为 null - 这在第一次创建 Activity 时发生。
这是一个广泛的话题,您可以在此处找到更多信息:
https://developer.android.com/topic/libraries/architecture/saving-states https://developer.android.com/guide/fragments/saving-state
【讨论】:
感谢您澄清一切,非常感谢!以上是关于发生配置更改时如何不重置我的片段?的主要内容,如果未能解决你的问题,请参考以下文章