使用数据绑定库时需要调用 DataBindingUtil.setContentView() 什么?
What's the need to call DataBindingUtil.setContentView() when using Data Binding Library?
我正在学习使用数据绑定库。我开始知道它消除了手动调用 findViewById() 的需要,并使代码更加健壮和可读。
为了了解使用,我做了以下工作:
制作了一个 temp_layout.xml,其中包含 2 个文本视图,其 ID 分别为 'tv1' 和 'tv2'
添加了 <layout>
标签作为根
点击了 '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 和所有其他数据绑定相关任务,并且为您提供可以使用的绑定对象。
我正在学习使用数据绑定库。我开始知道它消除了手动调用 findViewById() 的需要,并使代码更加健壮和可读。
为了了解使用,我做了以下工作:
制作了一个 temp_layout.xml,其中包含 2 个文本视图,其 ID 分别为 'tv1' 和 'tv2'
添加了
<layout>
标签作为根点击了 '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 和所有其他数据绑定相关任务,并且为您提供可以使用的绑定对象。