片段之间共享视图模型,而不确定活动范围



使用新的导航架构组件,我得到了一个单独的活动作为导航主机,其中包含多个屏幕片段。现在我有一个EditProfileFragment,用户可以在其中单击一个按钮,然后打开另一个片段,其中有一个可供选择的国家列表。假设我想将该国家/地区的选择结果分享回EditProfileFragment。总体想法是,我将为所有"编辑配置文件"操作提供一个EditProfileViewModel。

  1. 如何在这些片段之间共享选定的国家?我正在考虑使用共享视图模型,但我不太愿意将其定义为活动,因为我不希望它在用户完成"编辑配置文件"流时持续存在。

  2. 我是否应该考虑其他干净/推荐的方法?也许是一个临时保持该值的singleton?

共享视图模型确实更容易,但正如您所说,它还涉及其他问题,如将视图模型范围界定到更高的上下文以进行简单的信息交换。

IMHO共享视图模型在某些场景中是一种不错的方法。我正在开发一个有5个选项卡的应用程序,第一个选项卡就像第二个和第三个选项卡的摘要。使用共享视图模型是一个很好的选择,因为我只是在重用数据,只是更改适配器在相应视图中显示的项目数,逻辑正在被重用。

听起来你的个人资料中有一些常见的逻辑/项目&配置文件编辑页面。我不知道有多少,但如果你觉得在这两者之间共享一个视图模型是不够的,请记住,仅仅因为你使用了视图模型并不意味着你必须使用它们来共享/存储/传递一些数据。例如:

  • 使用获取的数据导航到上一个片段
  • 您可以将"概要文件"保存为持久性,并更改存储的内容。当概要文件的视图模型被(重新(创建时,它会从持久性中获得最新的值
  • 您可以直接在服务器中更新您的配置文件,然后在配置文件中再次获取
  • 你可以把上面这两个混在一起

回答我自己关于如何解决这个问题以供将来参考的问题:

因为我想保持ViewModel-View(控制器(/FFragment之间的1对1关系,所以我选择了一个UserRepository,它在这种情况下保存一个"临时状态"对象。

相关内容

  • 没有找到相关文章

最新更新