【发布时间】:2021-08-08 04:30:50
【问题描述】:
我一直在阅读https://developer.android.com/topic/libraries/view-binding,并在思考他们如何在片段中定义视图绑定属性。
这是示例代码:
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)
val view = binding.root
return view
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
所以_binding 是可空的,因为对视图的引用将在onDestroyView() 中销毁。但是,他们使用 binding 作为支持属性,它检索 _binding 并使其不可为空(在 Kotlin 中调用强制展开的等效项)。
问题是为什么我们应该有_binding 和binding,应该使用哪一个?感觉就像你试图让_binding 可以为空,那么为什么用binding 让它本质上不可为空,并在视图被破坏时冒着访问视图的风险?
【问题讨论】:
-
“他们使用绑定作为支持属性” 反过来;
binding_是binding的支持属性。
标签: android kotlin android-jetpack android-viewbinding