Android数据绑定未遵循kotlin的liveData构建器
下面的代码将创建一个LiveData,应该通过XML
中的数据绑定来观察它,但是它不起作用
val text =
liveData(Dispatchers.Default) {
emit("Hello")
}
如果在Kotlin
中被观察到,则可以正常工作
vm.text.observe(lifeCycleOwner,{
binding.texti.text = it
})
xml:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/texti"
android:text="@{viewModel.text}"
/>
如果我将实时数据的定义更改为:
val text = MutableLiveData("Hello")
数据绑定自动观察并设置文本
我做错了还是错误?
答案 0 :(得分:1)
您是否设置了绑定的生命周期所有者?绑定初始化应类似于:
override fun onCreate(savedInstanceState: Bundle?) {
val binding = DataBindingUtil.setContentView<MyActivityBinding>(this, R.layout.my_activity)
binding.setLifecycleOwner(this)
binding.viewModel = viewModel.get()
...
}
有关更多详细信息,请参见:Use LiveData to notify the UI about data changes