首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Architecture组件ViewModel上下文问题

Architecture组件ViewModel上下文问题
EN

Stack Overflow用户
提问于 2017-09-11 08:54:36
回答 1查看 397关注 0票数 4

我正在尝试在Android中使用新的体系结构组件,到目前为止,它运行得很好。然而,我无意中遇到了一个建筑问题。

我有一个MainActivity,它承载了大量的片段,ABC。直到现在,每次我需要我的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将显示一些旧数据。

我看到的最明显的解决方案是分别在片段VMB上下文中创建B。但是,我想不出如何让片段C访问那些VM

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

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

做这件事最好的方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-11 09:12:35

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

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

BB_key也是如此。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46151703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档