为什么在这个 viewBinding 示例中使用 get()?

Why is get () used in this viewBinding example?

我想知道为什么“private val binding get() = _binding!!”在这里使用?

 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)
    val view = binding.root
    return view
}

override fun onDestroyView() {
    super.onDestroyView()
    _binding = null
}

我假设您从 this page in the documentation.

获得了该代码

他们的 objective 是为您提供一种访问 _binding 值的方法,而无需处理 _binding 可以是 null 这一事实。在您未包括的示例部分中,他们对 binding 有评论,指出它只能在 onCreateView()onDestroyView() 之间使用。 如果您在代码的一部分可以保证您的代码将在这两个回调之间执行,您可以参考binding,这将 return _binding 的值强制转换为非 null 类型(ResultProfileBinding 而不是 ResultProfileBinding?)。

但是,如果您弄错了,并且尝试在 onCreateView() 之前或 onDestroyView() 之后引用 binding,您将崩溃并返回 NullPointerException.

就个人而言,我会避免这种方法。