android - 使用共享 View 模型掌握细节流程

标签 android mvvm master-detail androidx

这个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时示例不可用。检查它,因为它实现了植物列表的主/详细流程,这似乎正是您正在寻找的。

关于android - 使用共享 View 模型掌握细节流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52986504/

相关文章:

c# - MVVM模式的哪一部分负责数据网格的分组

ios - Xamarin.Forms iOS 状态栏颜色与 NavigationPage

ios - 将主从应用程序调整为 SingleView 应用程序 : problems with AppDelegate

java - Android 空指针异常/调用目标异常

android - 断言错误改造Android

java - DropboxAPI.DeltaPage<MD> 类 - 什么是 MD?

java - 如何使用延迟响应解决 JSON 改造错误

java jackson json 处理器 - 在 RestTemplate 中使用 - EnumSet 的处理

c# - 根据 MainViewModel 中的状态启用/禁用不同 View 上的控件的最佳方法

ios - 如何在主视图上添加详细 View ?