有关binding

 

如今已经没有什么kotlin-android-extensions了啊

要方便也只能是binding了(吧

在Activity中用binding

Activity中用binding要在class里边来个定义

private lateinit var binding: FirstLayoutBinding

然后在onCreate里面进行一个值的赋

binding = FirstLayoutBinding.inflate(layoutInflater)
setContentView(binding.root)

恭喜你,现在可以像

binding.cannotDoAnymore

这样调用一个控件了!

至于在Fragment中……

大差不差啦,比如开始可以这样写

private var _binding: HomepageFragmentBinding? = null
private val binding get() = _binding!!

这里用!!是为了防止之后要用一堆?. 不太好看说实话

然后在onCreateView之中这样写

override fun onCreateView(
inflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    _binding = HomepageFragmentBinding.inflate(inflater, container, false)
    return binding.root
}

大功告成!之后你就能在Fragment中摆脱一大堆findViewById了吗?

还有一步,就是在onDestroyView中把这个binding再干掉!

如下

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

为什么呢?GPT言道:需要在 onDestroyView 中显式地清理Binding对象,以避免内存泄漏

好吧其实我现在不是很看得懂这玩意

哎呀不管那么多有的没的了,感谢GPT神医就完了

下一集:回来吧findViewById