androidx ViewModel可变LiveData LiveData

androidx ViewModel可变LiveData LiveData,android,kotlin,viewmodel,androidx,Android,Kotlin,Viewmodel,Androidx,我是Kotlin和Android编程新手。我不明白为什么onChanged没有出现在前两个示例中,但最后一个示例是可以的。如有任何建议,我们将不胜感激 var liveDataTest:MutableLiveData<String> = MutableLiveData("ABC") liveDataTest.observe(this, androidx.lifecycle.Observer() { //Cannot find "override fun onChanged" })

我是Kotlin和Android编程新手。我不明白为什么onChanged没有出现在前两个示例中,但最后一个示例是可以的。如有任何建议,我们将不胜感激

var liveDataTest:MutableLiveData<String> = MutableLiveData("ABC")
liveDataTest.observe(this, androidx.lifecycle.Observer() {
 //Cannot find "override fun onChanged"
})

前两个语法错误。如果您想像这样传递一个匿名类,语法是使用object关键字,并且由于Observer是一个接口,而不是一个类,所以您不需要调用它的构造函数

但由于这是单功能Java定义接口,因此可以使用lambda简化语法:

liveDataTest.observe(this) {
    TODO("not implemented")
}

在kotlin中,用户可以直接观察,无需实施覆盖方法:

val liveDataTest: MutableLiveData<String> = MutableLiveData("ABC")
        liveDataTest.observe(this, androidx.lifecycle.Observer { it ->
            Toast.makeText(context,it,Toast.LENGTH_SHORT).show()
        })
liveDataTest.observe(this, object: androidx.lifecycle.Observer {
    override fun onChanged(t: String?) {
        TODO("not implemented")
    }
})
liveDataTest.observe(this) {
    TODO("not implemented")
}
val liveDataTest: MutableLiveData<String> = MutableLiveData("ABC")
        liveDataTest.observe(this, androidx.lifecycle.Observer { it ->
            Toast.makeText(context,it,Toast.LENGTH_SHORT).show()
        })