繁体   English   中英

如何在Android的MVVM架构中将动作从View发送到ViewModel

[英]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模式/反模式

视图可以观察实时数据,但是ViewModel无法观察视图,因为视图不会发出LiveData对象。

从文档引用:

警告:ViewModel绝不能引用视图,生命周期或任何可能包含对活动上下文的引用的类。 ViewModel对象旨在使视图或LifecycleOwners的特定实例寿命更长

暂无
暂无

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

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