Android - 无法在数据绑定中设置变量(通过 ViewDataBinding),该怎么办?



我有一个用于我的 MainActivity 的布局文件,将其作为数据标签:

<data>
<variable name="viewmodel" type="com.me.app.MainViewModel" />
<variable name="main_activity" type="com.me.app.MainActivity" />
</data>

在我的 MainActivity 中,我像这样设置这些变量:

class MainActivity : AppCompatActivity() {
private var mainViewModel : MainViewModel? = null
override fun onCreate() {
mainViewModel = ViewModelProviders.of(this).get(MainViewModel::class.java)
val binding : ActivityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main)
binding.setVariable(BR.main_activity, this)
binding.setVariable(BR.viewmodel, mainViewModel)
binding.executePendingBindings()
}
}

在此代码段之后,正确设置了main_activity变量,但viewmodel变量似乎仍然是 MainViewModel 的一个实例,即使在稍后mainViewModel设置了默认值后,它仍保留所有默认值(我在 ViewModel 中使用 MutableLiveData 对象,并使用 .value 设置它们的内容(。为什么一个是设置的,另一个不是?

找出答案 -我忘了从onCreate((中删除"通常"的setContentView。问题中发布的代码没有这个。

最新更新