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

What is the difference between `bind`, `inflate` and `setContentView` in `DataBindingUtil`

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

一般setContentView()会显示在activity.

但是片段有一个名为 onCreateView 的生命周期方法,它 return 是一个视图。执行此操作的最常见方法是在 XML 和 return 中膨胀视图(如您在片段的 java 代码中看到的那样)。在这种情况下,您需要自己给它充气。片段没有 setContentView 方法。所以 inflate 用于 fragments.

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

bind 采用已经膨胀的视图层次结构,returns 为它 ViewDataBinding

inflate 获取布局资源 ID, 从中扩展视图层次结构 并 returns 为它 ViewDataBinding。它本质上等于

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

setContentView 获取布局资源 ID,从中扩充视图层次结构,将其设置为 activity 内容 和 returns 一个ViewDataBinding 用于膨胀的视图层次结构。它本质上等于

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