Android Viewmodel 可以具有 Activity 或 Fragment 的范围/生命周期,但是这将如何在 Navigation 组件中工作?
考虑我是否有以下情况:
主要活动 - 包含 NavHostFragment 客户列表片段 - 导航的起点 - 单击列表中的任何客户,将导航 CustomerDetailsFragment 客户详情片段 - 包含一个带有 3 个片段的选项卡:CustomerDetailFragment、CustomerContactFragment 和 CustomerOrderHistoryFragment CustomerDetailFragment - 显示客户的一般信息,例如姓名、年龄、性别等... - 从 CustomerViewModel 获取数据 客户联系片段 - 显示客户地址、电话、传真等 - 从 CustomerViewModel 获取数据 客户订单历史片段 - 显示客户的订单历史 - 从 OrderHistoryViewModel 获取数据
在上述场景中,是否可以为 CustomerDetailFragment 和 CustomerContactFragment 共享同一个 CustomerViewModel 实例?
如果我没有使用导航组件,我可以让 CustomerDetailsFragment 成为一个活动并将我的视图模型初始化为该活动,但是由于在导航中我们只有片段,我怎样才能最好地实现这一点?
我虽然:
公共类 CustomerDetailsFragment 扩展片段 { ... CustomerViewModel 模型 = ViewModelProviders.of(this).get(CustomerViewModel .class); ...
但是如何将视图模型的这个实例传递给 CustomerDetailFragment 和 CustomerContactFragment?
还是有更好的方法来构造上面的代码以达到相同的结果?