我试图在Android中使用新的体系结构组件,到目前为止它工作得很好。但是,我偶然发现了一个架构问题。Android体系结构组件ViewModel上下文问题
我有一个MainActivity
,它承载了一堆片段,A
,B
和C
。到目前为止,每次我需要我的ViewModel(VM)时,我都会在MainActivity
(如下所示:MyViewModel vm = ViewModelProviders.of(getActivity()).get(MyViewModel.class);
)的环境中获取它。现在考虑这个:
- 片段
C
让用户选择一定的价值,并将其写入到。 - 片段
A
使用片段C
让用户选择值,然后A
直接从中读取值并在其UI中显示它。 - 片段
B
使用与片段A
相同的方法。
的问题是,由于总是在MainActivity
的背景下,如果片段A
已经B
之前被使用,该值将仍然可用,B
会显示一些旧数据。
我看到的最明显的解决方案是分别在片段A
和B
的上下文中创建。但后来我不知道如何让片段C
访问那些s。
我还可以创建在片段C
的背景下,但这需要片段A
和B
创造C
一个实例,我不认为这是一个很好的解决方案。
第三种解决方案是保持当前的方法并在适当的时候清除中的数据,但这也是一团糟。
最好的方法是什么?
这样一个简单的解决方案 - 谢谢! –