【发布时间】:2021-07-10 14:02:00
【问题描述】:
在提问之前我想说我已经阅读了this post
正如谷歌文档所说: this link
你应该使用这个结构来声明绑定对象(_binding 和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
}
我想知道,我们是否可以将这个结构与一个声明绑定一起使用?它的工作原理是一样的吗?如果没有,为什么不呢?
class MyFragment: Fragment(R.layout.my_fragment_layout) {
private var binding: MyFragmentLayoutBinding? = null
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = MyFragmentLayoutBinding.inflate(inflater, container, false)
return binding!!.root
}
override fun onDestroy() {
super.onDestroy()
//to prevent from memory leaks
binding = null
}
}
【问题讨论】:
-
第一个只是为非空属性使用可为空的支持字段。这意味着如果在有效状态下访问
binding,则无需不断检查可空性或将其强制转换为非空。
标签: android kotlin fragment android-viewbinding