【问题标题】:Where is layoutInflater defined in this android app tutorial code?这个 android 应用教程代码中的 layoutInflater 定义在哪里?
【发布时间】:2021-02-13 16:38:26
【问题描述】:

This Android tutorial 介绍了视图绑定 的概念,this section 演示了如何使用它。在这种情况下,视图绑定是使用以下代码设置的。

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 的引用在做什么、在哪里定义以及它在此时的范围内如何代码。有人可以帮我理解这个吗?

【问题讨论】:

标签: android android-studio kotlin android-viewbinding


【解决方案1】:

ActivityMainBinding.java是数据绑定生成的类,有一个static方法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);
  }

我希望这是您正在寻找的内容,并且肯定可以帮助您。谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-07
    • 2012-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-11
    • 1970-01-01
    相关资源
    最近更新 更多