了解数据绑定的生命周期

时间:2019-02-20 22:14:39

标签: java android data-binding

我的活动:

class PlayerDetails : AppCompatActivity(), View.OnClickListener {

    private lateinit var binding: ActivityPlayerDetailsBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = DataBindingUtil.setContentView(this, R.layout.activity_player_details)

    }

我试图了解数据绑定过程的工作原理,这就是我的理解方式:

  • private lateinit var binding: ActivityPlayerDetailsBinding 实例化ViewDataBinding对象。
  • binding = DataBindingUtil.setContentView(this, R.layout.activity_player_details)分为2部分:

    1. DataBindingUtil.setContentView(this, R.layout.activity_player_details)将内容视图设置为给定的布局
    2. 然后将绑定对象返回到binding variablebinding = ...),然后可以使用该对象访问布局中的视图。

这是描述代码工作方式的准确方法吗?我发现DataBindingUtil.java的源代码很难理解。主要是因为setContentView()似乎被分配了,尽管binding = ...被调用了。

1 个答案:

答案 0 :(得分:0)

DataBindingUtil.setContentView(this,R.layout.activity_player_datails)做几乎相同的事情来返回绑定对象。尽管DataBindingUtils.setContentView会在返回前致电activity.setContentView

相反,我通常重写setContentView以确保将绑定对象分配给变量并将内容设置为给定的布局。

override fun setContentView(layoutResID: Int) {
        binding = DataBindingUtil.inflate(LayoutInflater.from(context), layoutResID, null, false)
        super.setContentView(mBinding.root)
}