如果有人发现我的实现有问题,我将非常感激知道它是什么。该活动似乎没有观察到我正在制作的 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。
主要问题是您在代码中使用了惰性。尝试使用 equals 代替它。
在您的
.observe
中,您缺少实时数据更新时返回的新值。
myViewModel.myLiveData.observe(this, Observer {
myTextView.text = it
})
它应该看起来像这样,其中“它”可以命名为任何名称:
myViewModel.myLiveData.observe(this, Observer { it ->
myTextView.text = it
})