2

我试图在Android中使用新的体系结构组件,到目前为止它工作得很好。但是,我偶然发现了一个架构问题。Android体系结构组件ViewModel上下文问题

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

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

的问题是,由于​​总是在MainActivity的背景下,如果片段A已经B之前被使用,该值将仍然可用,B会显示一些旧数据。

我看到的最明显的解决方案是分别在片段AB的上下文中创建​​。但后来我不知道如何让片段C访问那些​​s。

我还可以创建在片段C的背景下​​,但这需要片段AB创造C一个实例,我不认为这是一个很好的解决方案。

第三种解决方案是保持当前的方法并在适当的时候清除​​中的数据,但这也是一团糟。

最好的方法是什么?

回答

0

您可以在VM中映射并将AB的值存储在不同的密钥下。

因此,当A开始C它通过其A_key作为参数。当用户在C中选择一个值时,它将以A_key作为关键字存储在虚拟机映射中。当A检查值是否可用时,它只检查为A_key存储的值。

对于BB_key也是如此。

+0

这样一个简单的解决方案 - 谢谢! –