DataBindingUtil中的bind,inflate和setContentView有什么区别

时间:2020-06-23 10:54:57

标签: android kotlin android-databinding android-jetpack

我已经看到DataBindingUtil与这三种方法一起使用,并且从文档(https://developer.android.com/reference/android/databinding/DataBindingUtil)尚不清楚这三种方法之间的区别。

2 个答案:

答案 0 :(得分:6)

bind采用已经膨胀的视图层次结构,并为其返回ViewDataBinding

inflate获取布局资源ID,从中获取视图层次结构,并为其返回ViewDataBinding。基本上等于

val layoutInflater = LayoutInflater.from(context)
val view = layoutInflater.inflate(R.layout.some_layout, ...)
val binding = DataBindingUtil.bind<SomeLayoutBinding>(view)

setContentView获取布局资源ID,从中扩展视图层次结构,将其设置为活动内容,并为扩展后的视图层次结构返回ViewDataBinding。基本上等于

setContentView(R.layout.some_layout)
val view = findViewById<View>(android.R.id.content)
val binding = DataBindingUtil.bind<SomeLayoutBinding>(view)

答案 1 :(得分:3)

常规 setContentView ()将显示在活动中。

但是片段有一个称为onCreateView的生命周期方法,该方法返回一个视图。最常见的方法是用XML扩展视图并返回它(如您在片段的Java代码中所见)。在这种情况下,您需要自己充气。片段没有setContentView方法。因此充气用于片段

并绑定只是将视图绑定到布局。