使用共享视图模型的主要细节流程

时间:2018-10-25 09:59:34

标签: android mvvm master-detail androidx

“片段之间共享数据”一节中的android documentation page描述了如何使用ViewModel解决主详细信息流中所选项目的共享。但是,该解决方案仅适用于将两个片段都放在同一Activity中的大型设备。在较小的设备上,常见的方法是在其自己的DetailActivity中包含细节片段,然后两个片段将具有不同的ViewModel实例,因此该方法将失败。

所以我的问题是如何将其推广到所有设备尺寸?

我有一个主意,即使在小型设备上,我也可以将两个片段放在同一活动中。将此与我见过的主细节流程的每个实现相违背。可以实现导航拟合。然后DetailActivity仅用于显示单个项目作为对Intent的反应。它可以实例化SharedViewModel,并将传递的项目设置为selectedItem。然后,细节片段可以以相同的方式获取SharedViewModel的实例,而无需区分两个父活动。

这个question很相似,但评论中的人们抱怨说这是广泛而不清楚的

1 个答案:

答案 0 :(得分:1)

为什么在较小的设备上需要DetailActivity? 您仍只能拥有一个Activity来保持主ViewModel与详细信息Fragment之间的共享Fragment

然后使用NavigationController交易或ViewModel在主数据和明细之间切换。唯一的区别是两个片段不会在屏幕上同时显示,但它们仍将共享链接到父Activity的基础data['price'].append(data['place1'])

也许在询问sunflower示例时不可用。请检查它,因为它实现了植物列表的主/详细流程,这似乎正是您要寻找的。