这个android documentation page “在 fragment 之间共享数据”部分描述了如何使用ViewModel
解决主详细信息流中所选项目的共享。但是,该解决方案仅适用于将两个 fragment 放在同一个 Activity
中的大型设备。在较小的设备上,常见的方法是将详细信息 fragment 放在其自己的 DetailActivity 中,然后两个 fragment 将具有不同的 ViewModel 实例,因此该方法将失败。
所以我的问题是如何将其推广到所有设备尺寸?
我有一个想法,即使在小型设备上,我也可以将这两个 fragment 放在同一个 Activity 中。这违背了我所见过的主细节流程的每一个实现。可以实现导航拟合。然后 DetailActivity
将仅用于显示单个项目作为对 Intents 的 react 。它可以实例化 SharedViewModel
并将传递的项目设置为 selectedItem
。然后,详细信息 fragment 可以以相同的方式获取 SharedViewModel 的实例,并且不需要区分两个父 Activity。
这个question类似,但评论中的人提示它太宽泛且不清楚
最佳答案
为什么你需要 DetailActivity
在较小的设备上?
您仍然只能拥有一个Activity
持有共享ViewModel
主与细节之间Fragment
.
然后使用 Fragment
交易或NavigationController
在主视图和细节 View 之间切换。唯一的区别是两个 fragment 不会同时在屏幕上可见,但它们仍将共享底层 ViewModel
链接到父级 Activity
.
也许在询问sunflower时示例不可用。检查它,因为它实现了植物列表的主/详细流程,这似乎正是您正在寻找的。p>
关于android - 使用共享 View 模型掌握细节流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52986504/