【发布时间】:2019-12-08 22:57:22
【问题描述】:
我的 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 设置它们之后也保留所有默认值(我使用 MutableLiveData 对象在 ViewModel 中,并使用 .value 设置它们的内容)。为什么一个设置了,一个没有设置?
【问题讨论】:
-
向我们展示您的 ViewModel 内容以及您对这些 MutableLiveData 的 XML 使用情况
-
@GuilhermeLimaPereira 找出问题所在 - 查看答案。
标签: android kotlin data-binding