android - 这个 android 应用教程代码中的 layoutInflater 定义在哪里?
问题描述
本 Android 教程介绍了视图绑定的概念,本节将演示如何使用它。在这种情况下,视图绑定是使用以下代码设置的。
class MainActivity : AppCompatActivity() {
lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
}
}
调用的解释ActivityMainBinding.inflate()
如下:
此行初始化您将用于访问 activity_main.xml 布局中的视图的绑定对象。
这没有解释变量layoutInflater
的定义位置。
使用 Android Studio 时,代码完成提示变量“来自 getLayoutInflater()”:
getLayoutInflater()
似乎是Activity中的一种方法,但这并不能帮助我理解引用在layoutInflater
做什么,它在哪里定义,以及它在代码的这一点上是如何在范围内的。有人可以帮我理解这一点吗?
解决方案
ActivityMainBinding.java是数据绑定生成的类,有一个静态方法 inflate()。当您将layoutInflater(它检索已经连接到当前上下文的标准 LayoutInflater 实例)传递给 inflate() 时,它会在代码下生成与我们通常在为视图膨胀时所做的相同的代码,并自动获取布局名称。
所以,整个方法就像
public static ActivityMainBinding inflate(@NonNull LayoutInflater inflater,
@Nullable ViewGroup parent, boolean attachToParent) {
View root = inflater.inflate(R.layout.activity_main, parent, false);
if (attachToParent) {
parent.addView(root);
}
return bind(root);
}
我希望这是您正在寻找的,并且肯定可以帮助您。谢谢
推荐阅读
- sql - 用 SELECT 语句的结果填充 BETWEEN
- c# - 如何将datagridview中的列绑定到c#中的数组元素
- python - {ValueError: int() 以 10 为基数的无效文字:} 分组整数时
- gitlab - 为什么 Gitlab 在您批准合并请求时会自动将目标分支合并到源分支?如何禁用此行为?
- javascript - 我很困惑为什么会这样?数字(i)+数字(1);
- ios - iOs:如何在 UITabBarItem 中获得最小比例因子?
- python-3.x - 结束批处理文件交互以禁用 Python 输出重定向
- node.js - socket.io 在路径上带有 nodejs ( http://localhost:3000/path)
- javascript - Chrome webRequest中的URL重定向被阻止的URL
- amazon-web-services - 由于服务角色,无法创建管道