【问题标题】:How do I not reset my fragments when configuration changes happen?发生配置更改时如何不重置我的片段?
【发布时间】:2021-09-28 20:09:15
【问题描述】:

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

【问题讨论】:

    标签: java android android-fragments android-fragmentactivity android-configchanges


    【解决方案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

    【讨论】:

    • 感谢您澄清一切,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    • 2016-08-27
    相关资源
    最近更新 更多