【问题标题】:How to restore a fragment along with user-entered data如何恢复片段以及用户输入的数据
【发布时间】:2019-05-06 11:52:11
【问题描述】:

我有 3 个片段:用户在前 2 个片段中输入信息,即 A 和 B,输入的信息汇总在 C 中。我正在使用捆绑包来收集信息,并使用 backstack 来帮助用户返回。

但是,主要问题是一旦用户离开它们,在片段 A 和 B 中输入的信息就不会被保存。因此,如果用户返回片段 A 或 B,我将使用捆绑包中的数据预先填充任何预先输入的信息。

这真的很痛苦,因为我有各种各样的看法。 TextViews 和 TimePickers 很好,但 RadioButtons 和 CheckBoxes 真的很有挑战性。

我对 Android 还很陌生,已经编写了大约 4 个月的代码。有没有一种简单的方法来保存和恢复一个片段(可能使用片段标签),它也会保留用户输入的信息?如果是这样,请进行描述。提前致谢。

【问题讨论】:

标签: android fragment


【解决方案1】:

然而,主要问题是一旦用户离开它们,在片段 A 和 B 中输入的信息就不会被保存。

简单的方法是使用SharedPreferences,将片段A和B中输入的信息作为键值保存到SharedPref中,然后在片段c中检索它们并进行计算。

单选按钮和复选框真的很有挑战性。

还将每个RadioButtonsCheckBoxes 的状态保存到SharedPref,然后检索它们并在那里设置状态。

【讨论】:

    【解决方案2】:

    假设这 3 个片段由同一个 Activity 容纳,您可以使用共享 ViewModel 实例来表示与这 3 个片段相关的数据。

    看看这个链接https://developer.android.com/topic/libraries/architecture/viewmodel

    那里有一个关于在 Fragment 之间共享数据的部分,并显示了在两个 Fragment 之间共享的自定义 ViewModel 的示例。关键是

    model = ViewModelProviders.of(getActivity()).get(SharedViewModel.class);

    请注意,它使用封闭的 Activity 作为该 SharedViewModel 实例的“所有者”。因此,由同一个 Activity 容纳的两个片段将获得该 SharedViewModel 的实例,并且能够共享数据。如果您需要保留该数据,则可以将该逻辑封装在 ViewModel 中,或者让该 ViewModel 将其委托给某个 DAO/Repository 类。

    【讨论】:

      猜你喜欢
      • 2023-01-25
      • 1970-01-01
      • 2022-10-15
      • 1970-01-01
      • 1970-01-01
      • 2012-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多