Android数据绑定不观察kotlin的liveData构建器

2 data-binding android kotlin android-livedata

Android数据绑定不观察kotlin的liveData构建器

以下代码将创建一个 LiveData,并且应该通过数据绑定来观察它,XML但它不起作用

val text =
        liveData(Dispatchers.Default) {
            emit("Hello")
}
Run Code Online (Sandbox Code Playgroud)

另一方面,如果它被观察到Kotlin它工作得很好

  vm.text.observe(lifeCycleOwner,{
            binding.texti.text = it
        })
Run Code Online (Sandbox Code Playgroud)

xml:

val text =
        liveData(Dispatchers.Default) {
            emit("Hello")
}
Run Code Online (Sandbox Code Playgroud)

如果我将实时数据的定义更改为:

val text = MutableLiveData("Hello")
Run Code Online (Sandbox Code Playgroud)

数据绑定自动观察并设置文本

是我做错了还是bug?

Val*_*kov 6

您是否设置了绑定的生命周期所有者?绑定初始化应如下所示:

override fun onCreate(savedInstanceState: Bundle?) {
    val binding = DataBindingUtil.setContentView<MyActivityBinding>(this, R.layout.my_activity)
    binding.setLifecycleOwner(this)
    binding.viewModel = viewModel.get()
    ...
}
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅:使用 LiveData 通知 UI 有关数据更改的信息