【问题标题】:Android - cannot set variable in databinding (via ViewDataBinding), what to do?Android - 无法在数据绑定中设置变量(通过 ViewDataBinding),该怎么办?
【发布时间】: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


【解决方案1】:

找到答案 - 我忘记从 onCreate() 中删除“常规”setContentView。问题中发布的代码没有。

【讨论】:

    猜你喜欢
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    • 2019-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多