簡體   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