Mas*_*imo 8 android kotlin android-databinding
示例如下:
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
}
Run Code Online (Sandbox Code Playgroud)
为什么使用 avar _binding
和 a val binding
,它只是得到_binding
,而不是使用 a lateinit var binding
only ?这个选择背后有什么隐情吗?
事实上,在活动的示例中,他们实际上使用了lateinit var
:
private lateinit var binding: ResultProfileBinding
override fun onCreate(savedInstanceState: Bundle) {
super.onCreate(savedInstanceState)
binding = ResultProfileBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
}
Run Code Online (Sandbox Code Playgroud)
为什么要徒劳地使代码复杂化呢?
这是命名约定,如果您有私有 Kotlin 属性,那么您应该以下划线开头。
科特林文档:
支持属性的名称: 如果一个类有两个概念上相同的属性,但一个是公共 API 的一部分,另一个是实现细节,请使用下划线作为私有属性名称的前缀:
class C {
private val _elementList = mutableListOf<Element>()
val elementList: List<Element>
get() = _elementList
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3089 次 |
最近记录: |