活动未观察到 ViewModel (MVVM) 中 LiveData 的更新

问题描述 投票:0回答:2

如果有人发现我的实现有问题,我将非常感激知道它是什么。该活动似乎没有观察到我正在制作的 MutableLiveData 的更新。

视图模型

class MyViewModel : ViewModel() {

   val myLiveData: MutableLiveData<String> by lazy {
       MutableLiveData<String>()
   }

   fun updateData(newValue: String) {
       myLiveData.postValue(newValue)
   }
}

活动

class MyActivity : AppCompatActivity() {

private val myViewModel: MyViewModel by viewModels()

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    
    myViewModel.myLiveData.observe(this, Observer {
        myTextView.text = it
    })
    
}}

我知道 updateData 可以工作,因为如果我用任意字符串从活动中调用它,它就会更新 UI。

android kotlin mobile android-livedata
2个回答
0
投票

主要问题是您在代码中使用了惰性。尝试使用 equals 代替它。


-3
投票

在您的

.observe
中,您缺少实时数据更新时返回的新值。

myViewModel.myLiveData.observe(this, Observer {
    myTextView.text = it
})

它应该看起来像这样,其中“它”可以命名为任何名称:

myViewModel.myLiveData.observe(this, Observer { it ->
    myTextView.text = it
})
© www.soinside.com 2019 - 2024. All rights reserved.