1.配置
build.gradle文件中添加配置,然后同步。
android {
...
buildFeatures {
viewBinding true
}
}
2.用 View Binding 类来访问布局中的视图
在Activity代码的顶部导入生成的 View Binding 类:
import com.example.yourapp.databinding.ActivityMainBinding
在活动类中创建一个 View Binding 对象,并使用 inflate方法获取绑定的视图:
private lateinit var binding: ActivityMainBinding
在活动的 onCreate 方法中,使用 setContentView 方法设置活动的视图,并使用 View Binding 对象获取根视图:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
// 现在您可以使用 binding 对象访问布局中的视图
binding.textView.text = "Hello, World!"
}
3. 在Fragment中使用View Binding
在Fragment中,你可以在onCreateView中使用View Binding:
class MainFragment : Fragment() {
private var _binding: FragmentMainBinding? = null
private val binding get() = _binding!!
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
_binding = FragmentMainBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.someView.text = "Hello, World!"
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
}
在Fragment中,我们需要在onDestroyView中设置_binding为null,这是因为视图可能在Fragment销毁之前就被销毁了,所以我们需要避免在Fragment和视图之间产生内存泄漏。
4.忽略View Binding
如果布局文件不需要生成绑定类,可以将 tools:viewBindingIgnore="true" 属性添加到该布局文件的根视图中:
<LinearLayout
...
tools:viewBindingIgnore="true" >
</LinearLayout>