繁体   English   中英

Android viewModel和Kotlin:与谁共享viewModel数据?

[英]Android viewModel and Kotlin: Who is the viewModel data shared with?

我研究了viewModel类,并做了一个简单的测试来理解该理论(初学者)。 我搜索了其他来源,但不确定与该viewModel的数据共享给谁。 使用一个属性创建了一个简单的viewModel类:

class MyViewModel: ViewModel() {
    var result: Int? = null
}

从两个位置为viewModel设置了一个值:

根活动

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

当从Activity中访问属性时, 我看到6 当通过片段B(两个片段都是相同活动的子代)访问它时, 我看到9 那就对了? Activity使用的viewModel仅对另一个Activity可见吗? 还是如果一个片段使用了viewModel,那么它也仅对其他片段可见? 如果是,要互相看到,是否需要使用捆绑,参数,意图或其他东西? 我将不胜感激。

ViewModelProviders.of(activity)检索的视图模型仅与该活动及其子项(片段)共享。 除非您创建自己的ViewModelProvider类,否则不能在多个活动之间共享ViewModel。

如果需要在活动之间共享数据,则应遵循存储库模式,首先将数据存储在存储库中(该存储库绑定到应用程序而不是活动),然后从该存储库中检索其他活动中的数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM