【问题标题】:How to maintain the fragment state in navigation components如何在导航组件中维护片段状态
【发布时间】:2021-08-15 07:17:18
【问题描述】:

我在我的项目中使用导航组件架构。我有一个问题。

例如:我有两个 Fragment A 和 Fragment B

片段 A -> 有 50 个项目的回收站视图

Fragment B -> 在 Fragment A 的回收站视图中显示单个项目的详细信息

问题是当用户向下滚动到最后一项并单击最后一项时。这里一切正常

当用户单击最后一个项目并移动到片段 B。当他从片段 B 向后按下时。片段 A 被重新创建。我想限制在导航组件中重新创建 Fragment A。

我对这种情况感到震惊。请帮我解决这个问题。

提前致谢

【问题讨论】:

    标签: android kotlin android-fragments android-architecture-navigation


    【解决方案1】:

    我不确定您是否可以在 Navigation 库中四处寻找以强制它保留特定的 Fragment 实例,但无论如何您都不应该这样做。您无法保证该对象将保留在内存中,尤其是当您离开应用程序并返回时。

    相反,您需要设计您的应用,使其能够恢复其状态,并将一切恢复原状。许多 UI 组件已经为您执行此操作(例如,EditText 会记住用户输入的内容)。

    RecyclerView 会记住它被滚动到的位置,但如果您需要为适配器获取数据,您可能需要设置这个:

    adapter.stateRestorationPolicy = PREVENT_WHEN_EMPTY
    

    这将使它推迟恢复滚动,直到您的适配器有超过零个项目(否则它只会“滚动”到顶部而您将失去位置)

    如果您有任何其他需要保存的状态(例如,识别您当前正在查看的数据集,以便您知道需要获取什么)you need to persist it

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-21
      相关资源
      最近更新 更多