繁体   English   中英

Android架构组件ViewModel上下文问题

[英]Android Architecture Components ViewModel context issue

我试图在Android中使用新的架构组件,到目前为止它已经运行得很好。 但是,我偶然发现了一个架构问题。

我有一个MainActivity ,它包含一堆片段, ABC 到目前为止,每次我需要我的ViewModel(VM)时,我都会在MainActivity的上下文中获取它(如下所示: MyViewModel vm = ViewModelProviders.of(getActivity()).get(MyViewModel.class); )。 现在考虑一下:

  • Fragment C允许用户选择一些值,并将其写入VM
  • 片段A使用片段C让用户选择值,然后A直接从VM读取值并在其UI中显示它。
  • 片段B使用与片段A相同的方法。

问题是,由于VM始终位于MainActivity的上下文中,如果在B之前使用了片段A ,则该值仍然可用,并且B将显示一些旧数据。

我看到的最明显的解决方案是分别在片段AB的上下文中创建VM 但后来我无法弄清楚如何让片段C访问那些VM

我也可以在片段C的上下文中创建VM ,但这需要片段AB来创建C的实例,我认为这不是一个很好的解决方案。

第三种解决方案是保持当前的方法,并在适当时清除VM的数据,但我认为这也很麻烦。

最好的方法是什么?

您可以在VM中使用映射,并将AB的值存储在不同的键下。

因此,当A开始C它将其A_key作为参数传递。 当用户在C选择一个值时,它将使用A_key作为键存储在VM的映射中。 A检查值是否可用时,它仅检查为A_key存储的值。

BB_key

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM