[英]How to send actions from View to ViewModel in MVVM architecture in Android
地狱! 我正在努力提高自己的Android体系结构技能。 我发现这篇文章说在视图中调用viewModels函数是一种不好的做法。
例如,以这种方式调用函数是不好的做法。
override fun onClick(v: View?) {
if (v == vk_login) {
loginViewModel.onVKLoginClick()
}
}
我了解如何使用LiveData将数据和动作从ViewModel传输到View。 为此,我们在视图中初始化LiveData。 但是我找不到任何信息如何从视图中使用LiveData(或类似方式)发送用户操作信息。
我应该在视图中初始化LiveData并为其订阅视图模型(听起来很奇怪)。
还是像这样使用smth更好:
loginViewModel.nameFromUser.value = "some name from text view"
还是我发现的文章是错误的并且可以从视图调用viewModels函数可以吗?
ViewModel
绝不应包含对Android框架的引用,更不要说视图了,否则会导致内存泄漏。 最好像这样使用loginViewModel.nameFromUser.value = "some name from text view"
。
视图可以观察实时数据,但是ViewModel
无法观察视图,因为视图不会发出LiveData
对象。
从文档引用:
警告:ViewModel绝不能引用视图,生命周期或任何可能包含对活动上下文的引用的类。 ViewModel对象旨在使视图或LifecycleOwners的特定实例寿命更长
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.