- viewBinding的作用
- 启用视图绑定
- Activity中使用视图绑定
- Framgent中使用视图绑定
- 与findViewById相比
viewBinding的作用
启用视图绑定之后,系统会为每个xml生成一个绑定类,我们在使用控件的时候就可以不用findviewbyid这种方式了,可以一定程度避免空指针。视图绑定主要用来替换findViewById。
启用视图绑定
视图绑定可以按模块启用,在需要绑定视图的模块的build.gradle中加入以下代码,启用viewbinding
viewBinding{
enabled=true
}
同步之后会为每个布局文件生成一个binding文件,每个绑定均包含对根视图以及具有ID的所有视图的引用。
Activity中使用视图绑定
class MainActivity : AppCompatActivity() {
private var mainBinding:ActivityMainBinding ? = null
override fun onCreate(savedInstanceState: Bundle?) {
mainBinding = ActivityMainBinding.inflate(LayoutInflater.from(this))
setContentView(mainBinding!!.root)
mainBinding!!.tvTest.text = "一个textview"
}
}
Fragment中使用视图绑定
class ViewBindingFragment : Fragment() {
private var ktbinding : KtLayoutFragmentBinding? = null
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
ktbinding = KtLayoutFragmentBinding.inflate(inflater)
return ktbinding!!.root
}
override fun onDestroyView() {
super.onDestroyView()
ktbinding = null
}
}
与findViewByid()相比
视图绑定与传统的findViewById()相比有以下有点
- 空安全,视图绑定会创建对视图的直接引用,不会出现以前由于ID不存在导致的空指针异常,如果视图仅出现在布局的某些配置中,则绑定类中包含其引用的字段会使用 @Nullable 标记。
- 类型安全 每个绑定类中的字段在视图中都存在一个与之匹配的类型,因此不会出现类型转换错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)