This Android tutorial介绍了 * 视图绑定 * 的概念,本节演示了如何使用它。在本例中,使用以下代码设置视图绑定。
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
的引用在做什么,它在哪里定义,以及它在代码的这个位置是如何在作用域中的。
2条答案
按热度按时间p1iqtdky1#
ActivityMainBinding.java是由数据绑定生成的类,它有一个static方法inflate()。当你传递layoutInflater(它检索一个已经连接到当前上下文的标准LayoutInflater示例)到inflate()时,它会在代码下生成与我们通常膨胀视图时相同的代码,并且它会自动获取布局名称。
整个方法就像
我希望这是你正在寻找的,肯定能帮助你。谢谢
9q78igpj2#
我遇到了同样的问题,发现layoutInflater是在NavigationMenuPresenter.java中声明的。
在我的例子中,java脚本的完整路径是
%HOMEDRIVE%%HOMEPATH%.gradle\缓存\模块-2\文件-2.1\com.google.android.材料\材料\1.7.0\289bb3a7fea52532f1163487f9469217ee608a9\材料-1.7.0-源代码.jar!\com\谷歌\android\材料\内部\导航菜单演示文稿. java