android - 使用 LiveData 时,为什么要在 ViewModel 类中双重声明变量?

标签 android kotlin mvvm

现在我正在遵循一个教程,我正在开发一个简单的游戏应用程序,试图理解和使用 MVVM 应用程序架构。在我的 ViewModel 类中,我有一个包含玩家得分的字段。

分数变量声明如下:

private val _score = MutableLiveData<Int>()
val score: LiveData<Int>
    get() = _score

现在,在我的 UI Controller 类中,我观察到的分数如下:

viewModel.score.observe(this, Observer { newScore ->
        binding.scoreText.text = newScore.toString()
    })

所以,我的问题是为什么我需要第二次声明分数?难道我就不能拥有一个

val score = MutableLiveData<Int>()

并像上面一样观察它?我试过了,有效。

最佳答案

它会起作用的。这样做的目的是确保对该变量的更改仅发生在一个位置,即您的 ViewModel。这只是人们遵循的一种模式,可以让您更轻松地调试并确保应用程序/ View 的状态正确。一source from Google我在这里找到了,尽管我确信还有更多

关于android - 使用 LiveData 时,为什么要在 ViewModel 类中双重声明变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69568203/

相关文章:

spring - Noarg构造函数未创建

wpf - DataGrid.RowStyle 仅适用于初始绑定(bind)

android - 我们可以通过 Chromecast 向电视发送通知吗?

android - Proguard 说输入 jar 文件被指定了两次

android - 尝试使用 Fragment 创建聊天?

java - Acra:如何从继承自 ReportSenderFactory 的自定义类中检索 token

android - 如何在 Android Gradle 配置中获取当前的 buildType

ios - KMM 应用程序无法在模拟器中运行

c# - 在其他 View 中的 ViewModel 中设置属性

wpf - 将单元格对象的属性绑定(bind)到 WPF DataGrid 中的 DataGridCell