androidx ViewModel可变LiveData LiveData
我是Kotlin和Android编程新手。我不明白为什么onChanged没有出现在前两个示例中,但最后一个示例是可以的。如有任何建议,我们将不胜感激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" })
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()
})