Android ViewBinding 使用

Android ViewBinding 使用

一、引言

随着 Android 开发的不断发展,对于视图绑定的需求也日益增长。ViewBinding 是 Android Jetpack 中的一个功能,它可以帮助开发者以更安全、更简洁的方式引用视图。本教程将详细介绍如何在 Android 项目中使用 ViewBinding。

二、启用 ViewBinding

要在项目中启用 ViewBinding,首先需要在项目的 build.gradle 文件中添加 ViewBinding 的支持。在 android 代码块中添加如下配置:

android {...buildFeatures {viewBinding true}...
}

完成上述配置后,同步 Gradle 项目,ViewBinding 功能就会被启用。

三、使用 ViewBinding

启用 ViewBinding 后,系统会为每个 XML 布局文件生成一个对应的绑定类。这个类的名称是将 XML 文件的名称转换为 Pascal 命名格式,并在末尾添加 Binding 后缀。例如,对于 activity_main.xml 布局文件,生成的绑定类名称为 ActivityMainBinding

在 Activity 或 Fragment 中,可以通过以下方式获取绑定类的实例:

ActivityMainBinding binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());

获取到绑定类的实例后,就可以通过该实例来引用 XML 布局中的视图了。例如,如果 XML 布局中有一个 ID 为 textView 的 TextView 控件,可以通过以下方式引用它:

TextView textView = binding.textView;

四、ViewBinding 的优势

使用 ViewBinding 可以带来以下优势:

  1. 类型安全:通过绑定类引用视图,可以避免因 ID 引用错误而导致的运行时异常。

  2. 空指针安全:绑定类中的视图引用在视图不存在时为 null,而不是抛出异常。

  3. 简洁的代码:无需使用 findViewById 方法,代码更简洁。

五、注意事项

在使用 ViewBinding 时,需要注意以下几点:

  1. 如果 XML 布局文件中存在 ID 冲突,需要在代码中显式指定引用的视图所在的布局文件。

  2. 如果在运行时动态修改了视图的 ID,那么通过绑定类引用的视图将无法更新。

六、总结

本教程介绍了如何在 Android 项目中使用 ViewBinding。通过启用 ViewBinding、使用绑定类引用视图以及了解 ViewBinding 的优势和注意事项,开发者可以更加高效、安全地进行 Android 开发。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/777012.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Web应用技术基础】CSS(5)——表格样式

第一题&#xff1a;表格边框 .html <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>HTML – 简单表格</title><link rel"stylesheet" href"step1/CSS/style.css"></head><bod…

使用改头换面之后的ExoPlayer实现Android视频播放

使用 ExoPlayer 实现 Android 视频播放 概览 在 Android 应用开发中实现视频播放是一个常见需求&#xff0c;尤其在视频流和 IPTV 应用中更为突出。本文将介绍如何在 Android 应用中使用 ExoPlayer 实现高效、流畅的视频播放&#xff0c;内容将包括 Java 和 Kotlin 两种语言的…

2024年数字IC秋招-海康威视-数字逻辑设计工程师-笔试题

文章目录 前言一、多选题1、下面属于AXI定义的传输通道的是2、在SystemVerilog语言中&#xff0c;如果想要约束随机变量x在a和b之间&#xff0c;以下代码中正确的是?3、UVM的通信接口类型包括哪些?4、常见的代码覆盖率收集包括哪些?5、关于linux和windows操作系统的使用&…

Windows无法安装torch==1.4.0

在conda中&#xff0c;每创建一个虚拟环境&#xff0c;就要重新配置其中的pytorch 这次我创建的虚拟环境需要torch1.4.0的版本。 torch网址&#xff1a;https://pytorch.org/get-started/previous-versions/ 解决办法 按以下代码进行安装&#xff1a; pip install torch0.4.0…

JAVA HTTP大文件断点续传上传

功能&#xff1a;大文件上传&#xff0c;断点续传&#xff0c;文件夹上传&#xff0c;重复文件检测&#xff0c;离线进度信息保存&#xff0c;音视频信息读取 优势&#xff1a;无限授权&#xff0c;开源开放&#xff08;自主可控&#xff09;&#xff0c;长期维护 场景&#…

线程创建的几种方式

1.继承Thread类 class MyThread extends Thread {public void run() {// 线程执行的任务for (int i 0; i < 5; i) {System.out.println("Thread: " i);try {Thread.sleep(1000); // 使线程休眠 1 秒} catch (InterruptedException e) {e.printStackTrace();}}}…

unity中 鼠标按下移动端与pc端的位置

if (Input.GetMouseButtonDown(0)) { Vector2 V Input.touchCount > 0 ? Input.GetTouch(0).position : new Vector2(Input.mousePosition.x, Input.mousePosition.y); } 射线检测 if (Input.GetMouseButtonDown(0)) { …

动态规划入门(数字三角形模型)

备战2024年蓝桥杯&算法学习 -- 每日一题 Python大学A组 试题一&#xff1a;摘花生 试题二&#xff1a;最低通行费用 试题三&#xff1a;方格取数 试题四&#xff1a;传纸条 试题一&#xff1a;摘花生 【题目描述】 Hello Kitty想摘点花生送给她喜…

CImage 类及其常用成员函数用法实例详解 一

Cimage类是一个用于处理图像的类&#xff0c;它的主要用途是方便地创建、编辑、保存和显示图像。Cimage类支持多种图像文件格式&#xff0c;包括BMP、GIF、JPG、PNG和TIF等。较CBitmap类使用起来更方便。其构造函数及成员函数如下&#xff1a; 下面详细说明CImage常用成员函数的…

mysql80-DBA数据库学习1-数据库安装

掌握能力 核心技能 核心技能 mysql部署 官网地址www.mysql.com 或者www.oracle.com https://dev.mysql.com/downloads/repo/yum/ Install the RPM you downloaded for your system, for example: yum install mysql80-community-release-{platform}-{version-number}.noarch…

String类相关oj练习

1.第一次只出现一次的字符 做题首先看清要求和提示&#xff1a; 给定一个字符串 s &#xff0c;找到 它的第一个不重复的字符&#xff0c;并返回它的索引 。如果不存在&#xff0c;则返回 -1 。 提示&#xff1a; 1 < s.length < 105s 只包含小写字母 这就要用到我们所学…

如祺出行冲刺上市:三年被罚款270万元,销售费用远高于研发开支

3月26日&#xff0c;Chenqi Technology Limited&#xff08;如祺出行&#xff09;再次递交招股书&#xff0c;准备在港交所主板上市&#xff0c;中金公司、华泰国际、农银国际为其联席保荐人。据贝多财经了解&#xff0c;如祺出行曾于2023年8月递表。 相较于此前招股书&#xf…

蓝桥杯 java 凑算式 16年省赛Java组真题

题目 思路&#xff1a; 求有多少种解法 比如:68/3952/714就是一种解法&#xff0c;53/1972/486 是另一种解法 8/3952/714是可以除尽的 但是后面一个不行 所以我们也要通分 代码&#xff1a; public class 凑算式 {static int[] a {1, 2, 3, 4, 5, 6, 7, 8, 9};static int c…

Docker常见软件部署2

1 docker 安装redis集群 docker 安装redis集群&#xff0c;3主3从的配置。 1 创建一个redis通信网卡 #创建一个redis集群使用的网卡 docker network create redis --subnet 172.38.0.0/16 2 创建6个redis的配置文件 #通过脚本创建六个redis配置&#xff0c;复制下面命令直接…

Thingworx高可用集群部署(八)-Ignite集群部署

主机&#xff1a;10.10.10.62、10.10.10.63、10.10.10.64、10.10.10.65 服务器配置 关闭防火墙 setenforce 0 sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config systemctl stop firewalld systemctl disable firewalld 配置内核参数 cat >> /etc/s…

代码随想录算法训练营 DAY 23 | 450.删除二叉搜索树中的节点 669.修剪二叉搜索树 538.把二叉搜索树转换为累加树

669.修剪二叉搜索树 误区&#xff1a;节点不在范围内不能直接return null&#xff0c;因为它的右子树是可能符合边界的。虽然要删除这个节点&#xff0c;但还要先继续遍历右子树。 递归套递归&#xff0c;删除修剪的同时去递归修剪左/右子树&#xff0c;然后在下面递归左右子…

DBRX: A New State-of-the-Art Open LLM——基于专家LLM

刷知乎的时候&#xff0c;发现最近开源了一个新的大模型DBRX&#xff0c;同样是基于专家的大模型。之前找MOE的源码没找到&#xff0c;仅仅找到了一些博主写的博客内容&#xff0c;简单了解了一下内容。之前写的模型&#xff1a;Mixtral MOE代码理解添加链接描述。简单看了一下…

Kubernetes 知识体系 系列一

多年前&#xff0c;大多数软件应用程序都是大型的单体&#xff0c;要么作为单个进程运行&#xff0c;要么作为少数服务器上的少量进程运行。这种过时的系统一直延续很久。 它们的发布周期较慢&#xff0c;更新相对较少。 在每个发布周期结束时&#xff0c;开发人员将整个系统…

揭秘大型语言模型的动力之源:为何GPU不可或缺?

引言 大型语言模型&#xff08;Large Language Models, LLMs&#xff09;是当今人工智能领域最令人瞩目的技术之一&#xff0c;其在自然语言处理&#xff08;NLP&#xff09;、文本生成、对话系统等方面展现出了惊人的潜力。其中&#xff0c;像GPT-3和BERT等代表了这一领域的顶…

第三十二天-PythonWeb主流框架-Django框架

目录 1.介绍 发展历史 介绍 2.使用 1.安装 2.创建项目 3.项目结构 4.启动 3.开发流程 1.设置ip可访问 2.创建模块 3.第一个页面 4.视图 5.include()参数 6.url与视图的关系 7.响应内容 4.视图处理业务逻辑 1.响应html 2.获取url参数 3.从文件响应html内容 …