使用数据绑定库时需要调用 DataBindingUtil.setContentView() 什么?

What's the need to call DataBindingUtil.setContentView() when using Data Binding Library?

我正在学习使用数据绑定库。我开始知道它消除了手动调用 findViewById() 的需要,并使代码更加健壮和可读。

为了了解使用,我做了以下工作:

  1. 制作了一个 temp_layout.xml,其中包含 2 个文本视图,其 ID 分别为 'tv1' 和 'tv2'

  2. 添加了 <layout> 标签作为根

  3. 点击了 'build project'

现在我发现一个新的 'TempLayoutBinding' class 可用,其中包含变量 'tv1' 和 'tv2'.

我的问题是,即使我已经在temp_layout.xml中指定了<layout>标签,为什么我仍然需要调用[=13] =]? 具体有什么作用?

DataBindingUtil.setContentView() 将 Activity 的内容视图设置为给定布局并 return 关联绑定。它与 Activity 的 setContentView() 相同。

如果您不调用 DataBindingUtil.setContentView()setContentView(),您只会得到一个空白屏幕。

常规 setContentView(layoutRes) 所做的是在当前 activity 中显示您的 UI 并将其扩展到添加到 Activity 上下文的视图中,因此您可以在展开的布局上调用 findViewById 和其他方法。

在数据绑定中,常规 setContentView(layoutRes) 被替换为 DataBindingUtil.setContentView(context, layoutRes),它执行上述所有操作以及创建绑定对象,它在后台执行 findViewById 和所有其他数据绑定相关任务,并且为您提供可以使用的绑定对象。