【问题标题】:Android Navigation Architecture component avoid Fragment recreationAndroid Navigation Architecture 组件避免 Fragment 重新创建
【发布时间】:2019-02-18 12:52:04
【问题描述】:

我有以下流程,其中 Fragment 的内容是一个带有各种输入字段的表单。

片段 A -> 片段 B -> 片段 C -> 片段 D ...

当用户已经填满了例如Frag C,并移回Frag B时,Frag B的所有数据都被存储并保持原样,但是当向前移回C时,所有输入的数据都消失了. 想象同样的场景,用户填写了 Frag A,B 并且他已经填写了一半的 Frag C 字段,他选择返回 Frag A,当他导航回来时,之前的 Frags 上的所有输入数据都完好无损(B 和A),但是一旦他决定回到他所在的 C,B 和 C 的数据就会丢失,并且每走一步就会被新的 Fragment 替换。 因此,输入数据仅在返回时保留(android 后退按钮),当他打开之前已经存在的 Fragment 时,会创建一个所有输入为空白的新 Fragment。 每当用户在导航架构组件上向后或向前移动时,是否可以保持片段唯一?

【问题讨论】:

    标签: android android-fragments


    【解决方案1】:

    这不是停止片段重新创建的方法,但它可以解决您的问题。创建一个活动范围的 ViewModel 来保存表单数据,然后让你的 Fragment 观察这个 ViewModel。 ViewModel 将比 Fragment 寿命更长,因此在重新创建它们时,它们将使用您之前存储在 ViewModel 中的值。

    How to implement ViewModel

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-21
      • 2014-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多