【发布时间】:2021-11-08 12:08:54
【问题描述】:
我是 Android 新手。我正在通过制作应用程序来学习。我对视图与片段的绑定有一点疑问。 从official documentation,他们正在做这样的事情:
class FragmentOne : Fragment() {
private val tagLog = "FragmentOne"
private var _binding: FragmentOneBinding? = null
private val binding get() = _binding!!
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
_binding = FragmentOneBinding.inflate(inflater, container, false)
return _binding?.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.button.setOnClickListener {
Toast.makeText(
requireActivity().applicationContext,
"Button Clicked",
Toast.LENGTH_SHORT
).show()
}
binding.tv.text = "Some Text"
}
override fun onDestroyView() {
_binding = null
Log.i(tagLog, "onDestroyView()")
super.onDestroyView()
}
}
有两个变量_binding和binding。但是,为什么我们不能只使用一个变量并做这样的事情:
class FragmentOne : Fragment() {
private val tagLog = "FragmentOne"
private var _binding: FragmentOneBinding? = null
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
_binding = FragmentOneBinding.inflate(inflater, container, false)
return _binding?.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
_binding?.button?.setOnClickListener {
Toast.makeText(
requireActivity().applicationContext,
"Button Clicked",
Toast.LENGTH_SHORT
).show()
}
_binding?.tv?.text = "Some Text"
}
override fun onDestroyView() {
_binding = null
Log.i(tagLog, "onDestroyView()")
super.onDestroyView()
}
}
我运行了这段代码,它运行良好。如果我使用单个变量有什么问题吗?
【问题讨论】:
标签: android android-fragments android-viewbinding