简介
使用视图绑定,以后在代码里面再也不需要findViewById,还可以避免空指针和类型不安全等问题。
使用方式:(Android Studio版本需要升级到3.6)
在需要用的module的build.gradle中添加,这时这个module下的所有布局文件都会自动生成一个binding类,类名参照这个布局文件名使用驼峰命名法,如果有哪个布局文件不需要生成这个binding类,可以在其根布局下添加tools:viewBindingIgnore="true"属性
android
{
...
viewBinding
{
enabled
= true
}
}
在需要使用的view给它们加上ID,根布局不需要,因为可以直接getRoot获得
<ConstraintLayout
...>
<TextViewandroid
:id
="@+id/name"/>
</ConstraintLayout
>
在Activity或Fragment中绑定后就可以直接用了 Activity中绑定
private lateinit var binding
: DataManagerBinding
override fun
onCreate(savedInstanceState
: Bundle
) {
super.onCreate(savedInstanceState
)
binding
= DataManagerBinding
.inflate(layoutInflater
)
setContentView(binding
.root
)
binding
.name
.text
= "Hello World!"
}
Fragment中绑定
private var _binding
: ResultProfileBinding
? = null
private val binding
get() = _binding
!!
override fun
onCreateView(
inflater
: LayoutInflater
,
container
: ViewGroup
?,
savedInstanceState
: Bundle
?
): View
? {
_binding
= ResultProfileBinding
.inflate(inflater
, container
, false)
_binding
.name
.text
= "Hello World!"
return binding
.root
}
override fun
onDestroyView() {
super.onDestroyView()
_binding
= null
}