首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android 视图绑定 ViewBinding

介绍 我们以前获取xml中的View,通常通过findViewById但是样板代码太多,而且容易引用错误发生崩溃。...开启viewBinding功能:在app/build.gradle文件中添加: //老版本 方法一: android { ......总结 与使用 findViewById 相比,视图绑定具有的优点: Null 安全:由于视图绑定会创建对视图的直接引用,因此不存在视图 ID 无效而引发 Null 指针异常的风险。...这意味着不存在发生类转换异常的风险。 而相较于DataBinding 的优势在于: 更快的编译速度:视图绑定不需要处理注释,因此编译时间更短。...易于使用:视图绑定不需要特别标记的 XML 布局文件,因此在应用中采用速度更快。在模块中启用视图绑定后,它会自动应用于该模块的所有布局。

1.5K10
您找到你想要的搜索结果了吗?
是的
没有找到

Android Studio 3.6中使用视图绑定替代 findViewById的方法

本文梗概 在 build.gradle 中就可以方便快捷地开启视图绑定且无须额外引入依赖库 视图绑定会为 Module 中的每一个布局文件生成一个绑定对象 (activity_awesome.xml →...开启视图绑定无须引入额外依赖,从 Android Studio 3.6 开始,视图绑定将会内建于 Android Gradle 插件中。...一个常见的错误用法是: 在开启视图绑定的同时,依然在 setContentView(…) 中传入布局的 id 而不是绑定对象。这将造成同一布局被填充两次,同时监听器也会被添加到错误的布局对象中。...这里会填充视图绑定所有的属性,同时做一些错误检测并生成清晰的错误提示。...在两者都被开启时,使用 <layout 标签的布局会由数据绑定来生成绑定对象;而其余的布局则由视图绑定生成绑定对象。 您可以在同一 Module 中同时使用数据绑定视图绑定

2.4K31

使用视图绑定替代 findViewById

本文梗概 在 build.gradle 中就可以方便快捷地开启视图绑定且无须额外引入依赖库 视图绑定会为 Module 中的每一个布局文件生成一个绑定对象 (activity_awesome.xml...开启视图绑定无须引入额外依赖,从 Android Studio 3.6 开始,视图绑定将会内建于 Android Gradle 插件中。...一个常见的错误用法是: 在开启视图绑定的同时,依然在 setContentView(...) 中传入布局的 id 而不是绑定对象。...这里会填充视图绑定所有的属性,同时做一些错误检测并生成清晰的错误提示。...在两者都被开启时,使用 标签的布局会由数据绑定来生成绑定对象;而其余的布局则由视图绑定生成绑定对象。 您可以在同一 Module 中同时使用数据绑定视图绑定

1.6K30

Android Studio 3.6中新的视图绑定工具ViewBinding 用法详解

目前,谷歌在 Android Studio 3.6 Canary 11 及更高版本中加入了新的视图绑定工具 ViewBinding。 下面我们一起看下具体使用。...</LinearLayout 当模块开启视图绑定功能后,系统会为该模块中的每一个XML文件生成对应的绑定类。每一个绑定类均包含对根视图以及定义了ID的所有视图的引用。...该布局中的 ImageView 没有 ID,因此绑定类中不存在对它的引用。 每个绑定类还包含一个 getRoot() 方法,提供为布局文件的根视图的直接引用。...而且 ViewBinding 在使用的过程中不存在类型转换以及空指针异常的问题。因为在绑定类中已经全部定义好了。开发者直接使用就可以。...到此这篇关于Android Studio 3.6中新的视图绑定工具ViewBinding 用法详解的文章就介绍到这了,更多相关android 视图绑定工具ViewBinding 使用内容请搜索ZaLou.Cn

1.6K20

【Kotlin】Kotlin 中使用 ButterKnife ( 仅用于适配 Kotlin 语言 | 不推荐新项目使用 )

情况说明 : ButterKnife 已经停止维护 , 新项目直接使用 视图绑定 , 数据绑定 进行开发 , 本篇博客只是为了适配老版本项目 ; 2 ....当前需求 : 目前的需求是保证之前的 Java 代码能平稳运行 , 基本框架不变 , 在 Kotlin 中使用 ButterKnife 进行视图绑定操作 ; II ....= null ② 视图绑定 : 使用 ButterKnife.bind(this) 绑定定义的组件 , 与 Java 中操作一样 ; override fun onCreate(savedInstanceState...Kotlin 代码的 Activity 中使用 ButterKnife 注解 : 注意只能使用下面的两种方式 ; package kim.hsl.kb import android.app.Activity...推荐用法 : 老版本应用 ( 没有使用 androidx ) 继续使用老版本的 ButterKnife , 新版本的应用就别用这个框架了 , 使用 JetPack 中的 视图 / 数据 绑定 ; ① 老项目

2.4K30

Android 使用View Binding的方法详解

;也终于支持全新的视图绑定组件View Binding;等。...现在有了新的选择–View Binding,官方解释: 通过视图绑定功能,您可以更轻松地编写可与视图交互的代码。在模块中启用视图绑定之后,系统会为该模块中的每个 XML 布局文件生成一个绑定类。...绑定类的实例包含对在相应布局中具有 ID 的所有视图的直接引用。 在大多数情况下,视图绑定会替代 findViewById。 使用 View Binding可按模块启用。...每个绑定类均包含对根视图以及具有id 的所有视图的引用。绑定类的类名是xml的名称后面加“Binding”。...name" binding.btnOpen.setOnClickListener{ Log.d(TAG,"btnOpen click") } 区别 与findViewById的区别:空安全和类型安全,不存在因引用了一个错误

1.7K41

绑定方式开启服务&调用服务的方法

需求:后台开启一个唱歌服务,这个服务里面有个方法切换歌曲 新建一个SingService继承系统Service 重写onCreate()和onDestory()方法 填一个自定义的方法changeSing...(String songNume) 主界面里,开启服务,关闭服务,更改歌曲的按钮 我们调用api开启服务,这是系统new出来的,我们没有得到SingService对象,因此没法调方法 由于系统框架在创建对象的时候会创建与之对应的上下文...bindService(service,conn,flags),参数:service是Intent对象,conn是ServiceConnection对象中间人不能为空,选项BIND_AUTO_CREATE,如果不存在就创建...,代理人类里面还有一些私有方法,这样当我们返回代理人对象的时候,必须向上转型一下,因此就可以保护代理人类里面的私有方法 MainActivity.java package com.tsh.mybindservice...public void changeSing(View v) { ibinder.callChangeSing("月亮之上"); } } SingService.java package

83020

【JetPack】ViewBinding 视图绑定组件 ( 启用模块 | 视图绑定定制 | 绑定类名称生成规则 | 绑定类字段生成规则 | 绑定类获取根视图 | 绑定类获取布局组件 )

视图绑定组件简介 II . 视图绑定 ViewBinding 使用前提 ( Android Studio 3.6 ) III . 视图绑定组件启用 IV ....视图绑定 ViewBinding 使用前提 ( Android Studio 3.6 ) ---- 1 ....Android Studio 最低版本要求 : 使用视图绑定组件 , 需要将 Android Studio 开发环境升级到 3.6 Canary 11 及以上版本 ; 2 ....视图绑定对应 Java 示例代码 ---- package kim.hsl.vb; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle..., 导致组件类型转换错误的情况 ; * */ public class MainActivity extends AppCompatActivity { /** * 视图绑定

1.2K10

【JetPack】视图绑定 ( ViewBinding ) 各种应用 ( 视图绑定两种方式 | Activity 布局 | 对话框布局 | 自定义组件布局 | RecyclerView 列表布局 )

视图绑定 ( ViewBinding ) 界面的两种方式 II . Activity 界面中 应用 视图绑定 ( ViewBinding ) III ....Dialog 对话框界面中 应用 视图绑定 ( ViewBinding ) IV . 自定义组件 应用 视图绑定 ( ViewBinding ) V ....; package kim.hsl.vb; import android.app.Dialog; import android.content.Context; import android.os.Bundle..., 及 关联界面操作 , 其中的 this 就是 ViewGroup 类型的 , 即组件本身 , 调用上述方法 , 可以将两个操作都完成 ; package kim.hsl.vb; import android.content.Context...RecyclerView 列表布局 应用 视图绑定 ( ViewBinding ) ---- RecyclerView 列表布局 应用 视图绑定 ( ViewBinding ) : ① 视图绑定需要在

1.5K30

【Jetpack】DataBinding 架构组件 ⑤ ( 数据模型与视图双向绑定 | BaseObservable 实现双向绑定 | ObservableField 实现双向绑定 )

一、数据模型 Model 与视图 View 双向绑定 ---- 1、数据模型 Model 与视图 View 的单向绑定 在之前的博客中 , 将 数据模型 Model 中的 指定 Field 字段 绑定到...View 视图中的组件 , 在实际案例中 , 将 Student 类中的 String 类型的 name 字段绑定到了 布局文件中的 TextView 组件中 , 当 Student#name 字段发生了改变...实现数据模型 Model 与视图 View 双向绑定 ---- 示例代码 : https://download.csdn.net/download/han1202012/87702558 1、启用 DataBinding...( 本博客的核心重点 ) ★ 实现 数据 与 视图 的双向绑定类 , 需要继承 BaseObservable 类 ; class StudentViewModel: BaseObservable { }...View 双向绑定 ( 本博客的核心重点 ) ★ ---- 示例代码 : ObservableField 实现数据模型 Model 与视图 View 双向绑定 与 BaseObservable 实现数据模型

1.3K30

【Jetpack】ViewModel 架构组件 ( 视图 View 和 数据模型 Model | ViewModel 作用 | ViewModel 生命周期 | 代码示例 | 使用注意事项 )

View 和 数据模型 Model ---- 在 Activity 中 , 存在两种元素 , 视图 View 和 填充视图数据用的 数据模型 Model ; 如果将 视图 和 数据模型 都写在 Activity...视图模型 继承 androidx.lifecycle.ViewModel 类 , 在其中定义要维护的数据即可 ; 代码示例 : package kim.hsl.viewmodeldemo import...ViewModel 组件 , 通过 ViewModelProvider 获取 MyViewModel::class.java 类 对应的 ViewModel 实例对象 ; 代码示例 : package...实例对象 , 如果 Activity 多次启动 , ViewModel 只会创建一次 ; 绑定 : Activity 与 ViewModel 关联时 , 开始绑定 ViewModel , Activity...否则会导致内存泄漏 ; 如果要使用 Context 上下文对象 , 则 ViewModel 需要继承 AndroidViewModel 类 , 在 其构造函数 中获取 Application 对象 ; 代码示例 : package

80320

京东金融客户端用户触达方式的精细化探索与实践

,通过事件解析引擎解析用户自定义事件并完成事件的绑定,完成解析赋值以及事件绑定后进行视图的渲染,最终将目标页面展示到屏幕 从用户使用角度来看,用户在使用App的过程中会有一些与用户相关的系统类的通知,比如交易物流...,通过事件解析引擎解析用户自定义事件并完成事件的绑定,完成解析赋值以及事件绑定后进行视图的渲染,最终将目标页面展示到屏幕。...App linkages for user 0: Package: com.android.demo 代表应用包名 Domains: play.google.commarket.android.com...优化方案:前期主要是制定引导策略避免过度打扰用户,在合适的时机检测通知开关状态,引导用户主动去设置页开启,后来经调研发现 ColorOS 系统提供了一键开启通知开关的能力,使用引导一键开启方案,用户使用更方便...,通过事件解析引擎解析用户自定义事件并完成事件的绑定,完成解析赋值以及事件绑定后进行视图的渲染,最终将目标页面展示到屏幕。

6.1K50
领券