使用View Binding时是否每次都需做空值检查?求可行方案
View Binding 空值检查的优化方案
不用每次都写空值检查,有几种实用方案可以规避:
直接用非空断言(
!!)在确定非空的场景
比如在Activity的onCreate方法里,通过val binding = ActivityMainBinding.inflate(layoutInflater)初始化的Binding实例,只要是在Activity生命周期内正常初始化,不可能为空,直接写binding.textView.text = "示例内容"即可,无需加问号。因为inflate方法本身返回的就是非空类型,只要初始化逻辑没问题,不会出现空实例。用
lateinit延迟初始化变量
如果需要在类的顶部声明Binding变量,可以用lateinit var binding: ActivityMainBinding,之后在onCreate(Activity)或onViewCreated(Fragment)中完成初始化。后续使用时直接调用binding.xxx就行,不用做空值判断。但要注意必须保证在使用前完成初始化,否则会抛出未初始化异常,只适合能明确初始化时机的场景。Kotlin中使用viewBinding委托(Fragment专属)
借助官方提供的委托简化处理,代码如下:private val binding by viewBinding(ActivityMainBinding::bind)这个委托会自动在Fragment的
onViewCreated阶段绑定视图,并且在视图销毁时自动置空Binding实例,使用过程中直接调用binding.xxx即可,不用手动处理空值,生命周期相关的空安全已经由委托搞定。
内容的提问来源于stack exchange,提问作者AbdullahCoder
相关产品推荐
相关产品推荐

