我研究了viewModel类,并做了一个简单的测试来理解理论(初学者(。我搜索了其他来源,但我不确定此视图模型中的数据与谁共享。使用一个属性创建了一个简单的视图模型类:
class MyViewModel: ViewModel() {
var result: Int? = null
}
将值设置为从两个位置查看模型:
根活动
val model = ViewModelProviders.of(this).get(MyViewModel::class.java)
model.result = 6
片段 A:
val model = ViewModelProviders.of(activity).get(MyViewModel::class.java)
model.result = 9
从活动访问属性时,我看到 6。当它被片段 B 访问时(两个片段都是同一活动的子级(,我看到 9。没错?活动使用的视图模型仅对另一个活动可见?或者,如果视图模型由一个片段使用,那么它也只对其他片段可见?如果是,要看到彼此,我是否需要使用捆绑、参数、意图或其他东西?我会很感激你的帮助。
ViewModelProviders.of(activity)
检索的视图模型仅共享给该活动及其子级(片段(。不能在多个活动之间共享 ViewModel,除非您创建自己的 ViewModelProvider 类。
如果需要在活动之间共享数据,则应遵循存储库模式,首先将数据存储在存储库(绑定到应用程序而不是活动(中,然后从该存储库检索其他活动中的数据。