为什么在这个 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
.
就个人而言,我会避免这种方法。
我想知道为什么“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
.
就个人而言,我会避免这种方法。