[英]Android Architecture Components ViewModel context issue
我试图在Android中使用新的架构组件,到目前为止它已经运行得很好。 但是,我偶然发现了一个架构问题。
我有一个MainActivity
,它包含一堆片段, A
, B
和C
到目前为止,每次我需要我的ViewModel(VM)时,我都会在MainActivity
的上下文中获取它(如下所示: MyViewModel vm = ViewModelProviders.of(getActivity()).get(MyViewModel.class);
)。 现在考虑一下:
C
允许用户选择一些值,并将其写入VM
。 A
使用片段C
让用户选择值,然后A
直接从VM
读取值并在其UI中显示它。 B
使用与片段A
相同的方法。 问题是,由于VM
始终位于MainActivity
的上下文中,如果在B
之前使用了片段A
,则该值仍然可用,并且B
将显示一些旧数据。
我看到的最明显的解决方案是分别在片段A
和B
的上下文中创建VM
。 但后来我无法弄清楚如何让片段C
访问那些VM
。
我也可以在片段C
的上下文中创建VM
,但这需要片段A
和B
来创建C
的实例,我认为这不是一个很好的解决方案。
第三种解决方案是保持当前的方法,并在适当时清除VM
的数据,但我认为这也很麻烦。
最好的方法是什么?
您可以在VM中使用映射,并将A
和B
的值存储在不同的键下。
因此,当A
开始C
它将其A_key
作为参数传递。 当用户在C
选择一个值时,它将使用A_key
作为键存储在VM的映射中。 当A
检查值是否可用时,它仅检查为A_key
存储的值。
B
和B_key
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.