我的活动:
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部分:
DataBindingUtil.setContentView(this,
R.layout.activity_player_details)
将内容视图设置为给定的布局binding variable
(binding = ...
),然后可以使用该对象访问布局中的视图。 这是描述代码工作方式的准确方法吗?我发现DataBindingUtil.java
的源代码很难理解。主要是因为setContentView()
似乎被分配了,尽管binding = ...
被调用了。
答案 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)
}