“片段之间共享数据”一节中的android documentation page描述了如何使用ViewModel
解决主详细信息流中所选项目的共享。但是,该解决方案仅适用于将两个片段都放在同一Activity
中的大型设备。在较小的设备上,常见的方法是在其自己的DetailActivity
中包含细节片段,然后两个片段将具有不同的ViewModel
实例,因此该方法将失败。
所以我的问题是如何将其推广到所有设备尺寸?
我有一个主意,即使在小型设备上,我也可以将两个片段放在同一活动中。将此与我见过的主细节流程的每个实现相违背。可以实现导航拟合。然后DetailActivity
仅用于显示单个项目作为对Intent的反应。它可以实例化SharedViewModel
,并将传递的项目设置为selectedItem
。然后,细节片段可以以相同的方式获取SharedViewModel
的实例,而无需区分两个父活动。
这个question很相似,但评论中的人们抱怨说这是广泛而不清楚的
答案 0 :(得分:1)
为什么在较小的设备上需要DetailActivity
?
您仍只能拥有一个Activity
来保持主ViewModel
与详细信息Fragment
之间的共享Fragment
。
然后使用NavigationController
交易或ViewModel
在主数据和明细之间切换。唯一的区别是两个片段不会在屏幕上同时显示,但它们仍将共享链接到父Activity
的基础data['price'].append(data['place1'])
。
也许在询问sunflower示例时不可用。请检查它,因为它实现了植物列表的主/详细流程,这似乎正是您要寻找的。 p>