怎么加入网站做微商城,口碑好的扬州网站建设,十大经典随身空间小说推荐,百度下载并安装到桌面文章目录 介绍作用用法开启ViewBinding功能自动生成绑定类在Activity中使用访问视图控件 区别 介绍 ViewBinding 是 Android 开发中的一个功能#xff0c;它简化了访问视图的过程#xff0c;避免了使用 findViewById 的繁琐步骤。它通过生成与布局文件相对应的绑定类#xf… 文章目录 介绍作用用法开启ViewBinding功能自动生成绑定类在Activity中使用访问视图控件 区别 介绍 ViewBinding 是 Android 开发中的一个功能它简化了访问视图的过程避免了使用 findViewById 的繁琐步骤。它通过生成与布局文件相对应的绑定类使得我们能够以类型安全的方式访问布局中的视图。 作用 视图绑定功能可让您更轻松地编写与视图交互的代码。在模块中启用视图绑定后它会为该模块中显示的每个 XML 布局文件生成一个绑定类。绑定类的实例包含对在相应布局中具有 ID 的所有视图的直接引用。 在大多数情况下视图绑定会替代 findViewById。 用法
开启ViewBinding功能
在bulid.gradle.kts中启用 不需要包含任何额外的库来启用视图绑定。从 Android Studio 3.6 中附带的版本开始它内置于 Android Gradle 插件中。要启用视图绑定需要在模块级 build.gradle 文件中配置 viewBinding 。 buildFeatures{viewBinding true}完成后点击sync now同步
自动生成绑定类
绑定类会在编译时自动生成位于 build/generated/data_binding_base_class_source_out 目录下。
绑定类包含了与 activity_main.xml 布局文件中定义的所有视图的绑定引用 绑定类命名规则 去掉下划线并将每个单词首字母大写PascalCase 布局文件名fragment_sample_list.xml activity_main.xml生成的绑定类名FragmentSampleListBinding ActivityMainBinding 在Activity中使用 声明全局变量 private ActivityMainBinding binding;这里ActivityMainBinding类就是步骤2中自动生成的绑定类的名字
绑定对象
binding ActivityMainBinding.inflate(getLayoutInflater());inflate ActivityMainBinding.inflate 方法是由 ViewBinding 功能自动生成的一个静态方法。它用于创建 ActivityMainBinding 实例。这个方法会解析布局文件 activity_main.xml并返回一个绑定对象通过这个对象可以访问布局中的所有视图。 getLayoutInflater getLayoutInflater 方法是 Activity 类中的一个方法它用于获取当前 Activity 的 LayoutInflater 对象。LayoutInflater 是一个用于解析 XML 布局文件并将其转换为相应的视图对象的类。 总结 调用 getLayoutInflater 方法获取当前活动的 LayoutInflater 实例。 使用这个 LayoutInflater 实例调用 ActivityMainBinding.inflate 方法解析 activity_main.xml 布局文件并创建一个 ActivityMainBinding 实例。 ActivityMainBinding 实例会包含对 activity_main.xml 布局文件中所有视图的引用。通过这个绑定对象你可以直接访问布局文件中的视图而无需使用 findViewById 方法。 设置内容视图
setContentView(binding.getRoot());使用setContentView将布局文件加载到当前活动中时通过binding.getRoot()获取布局资源ID
代码示例 public class MainActivity extends AppCompatActivity {// 声明 ViewBinding 全局变量private ActivityMainBinding binding;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 使用 ViewBinding 加载布局binding ActivityMainBinding.inflate(getLayoutInflater());// 设置当前活动的内容视图为绑定的根视图setContentView(binding.getRoot());}
}访问视图控件 通过绑定对象可以直接访问布局文件中的视图控件。 binding.tv1.setText(修改后);通过 ViewBinding 直接访问 activity_main.xml 布局文件中的 TextView 控件 binding.tv1.setText(修改后);binding.btn1.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {Toast.makeText(MainActivity.this, 按钮点击, Toast.LENGTH_SHORT).show();}});区别
与 findViewById 的区别
与使用 findViewById 相比视图绑定具有一些很显著的优点
Null 安全由于视图绑定会创建对视图的直接引用因此不存在因视图 ID 无效而引发 null 指针异常的风险。此外当视图仅存在于布局的某些配置中时绑定类中包含其引用的字段会标记为 Nullable。类型安全每个绑定类中的字段都具有与其在 XML 文件中引用的视图相匹配的类型。这意味着不存在发生类转换异常的风险。
这些差异意味着布局和代码不兼容会导致 build 在编译时而不是运行时失败。 感谢您的阅读 如有错误烦请指正 参考 Android开发解放双手的利器ViewBinding视图绑定 | Android Developers使用视图绑定替代findViewById