使用ViewBinding 要在 app -> src 里面 android{
加上
viewBinding {
enable = true
}
}
做完后要 sncy 一下
然后转到 Activity
导包里加上:
import com.example.avtivitytest.databinding.FirstLayoutBinding
分析代码:
private lateinit var firstActivityBinding: FirstLayoutBinding
rivate
: 这是一个访问修饰符,表示该变量只能在当前类中被访问。lateinit
: 这是一个关键字,用于声明一个可延迟初始化的变量。这意味着在变量被使用之前,不需要立即进行初始化。var
: 这是一个关键字,用于声明一个可变变量。firstActivityBinding
: 这是变量的名称。FirstLayoutBinding
: 这是变量的类型。
综合起来,这段代码声明了一个私有的、可延迟初始化的变量firstActivityBinding
,其类型为FirstLayoutBinding
。这个变量可以在当前类中使用,但在使用之前不需要立即进行初始化。
firstActivityBinding = FirstLayoutBinding.inflate(layoutInflater)
FirstLayoutBinding.inflate(layoutInflater)
: 这是一个方法调用表达式,表示调用FirstLayoutBinding
类的inflate
方法,并将layoutInflater
作为参数传递给该方法。
FirstLayoutBinding
类的inflate
方法是一个静态方法,用于将XML布局文件转换为对应的视图对象。它通常在Android开发中使用,用于将布局文件中定义的视图与代码中的变量进行绑定。
以下是一个简单的示例:
val binding: FirstLayoutBinding = FirstLayoutBinding.inflate(layoutInflater)
在这个示例中,inflate
方法接收一个LayoutInflater
对象作为参数,该对象用于将XML布局文件转换为视图对象。然后,它将返回一个FirstLayoutBinding
对象,该对象包含了与布局文件中定义的视图相关联的变量。
通过使用FirstLayoutBinding
类,开发者可以方便地访问和操作布局文件中的视图,而无需手动查找和操作视图对象。这提高了代码的可读性和可维护性。
setContentView(firstActivityBinding.root)
setContentView(firstActivityBinding.root)
是 Android 开发中常用的方法之一,用于将布局文件与当前活动(Activity)绑定。
具体解释如下:
setContentView()
是一个方法,用于设置当前活动的布局。它接受一个参数,即要显示的布局资源 ID 或 View 对象。firstActivityBinding
是一个视图绑定对象,它是通过 Data Binding 库自动生成的,用于简化布局文件中视图的访问和操作。root
是firstActivityBinding
中的一个属性,表示布局文件的根视图。在布局文件中定义的所有视图都可以使用firstActivityBinding
进行访问和操作。
因此,setContentView(firstActivityBinding.root)
的作用是将布局文件中的根视图设置为当前活动的布局,使得可以在代码中方便地访问和操作布局中的视图。
root
通常指的是布局文件的根视图,它作为布局的容器,包含了其他所有子视图。
private fun initView() {
firstActivityBinding.button1.setOnClickListener {
Toast.makeText(this,"cliked The button 1",Toast.LENGTH_SHORT).show()
}
}
它的作用是初始化视图并设置按钮的点击事件监听器。
ok,全代码:
package com.example.activitytest
import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.example.avtivitytest.databinding.FirstLayoutBinding
class FirstActivity : AppCompatActivity() {
private lateinit var firstActivityBinding: FirstLayoutBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
firstActivityBinding = FirstLayoutBinding.inflate(layoutInflater)
setContentView(firstActivityBinding.root)
initView()
}
private fun initView() {
firstActivityBinding.button1.setOnClickListener {
Toast.makeText(this,"cliked The button 1",Toast.LENGTH_SHORT).show()
}
}
}