Android Jetpack - ViewBinding

it2024-03-20  67

简介

使用视图绑定,以后在代码里面再也不需要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 // This property is only valid between onCreateView and // onDestroyView. 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 }
最新回复(0)