DylanCaiCoding/ViewBindingKTX

fragment的nullPointException错误

mikaelzero opened this issue · 1 comments

WX20210630-100908@2x

这是代码中使用

//这是一个异步
Pan.loadBitmap(requireContext(), homeIndexBean!!.weekGift.imgUrl) {
binding.freeWeekIv.setImageBitmap(it)//这行报错
binding.blurLayout.setBlurredView(binding.freeWeekIv)
}

下面是BaseFragment中的使用方法

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

_binding = inflateBindingWithGeneric(layoutInflater)

应该是异步回调时 Fragment 被销毁了,可以在 onDestoryView 解除订阅。或者回调时判断下 binding 的状态,在 BaseFragment 增加以下方法:

val isBindingAvaiable get() = _binding != null

回调时判断下 binding 是不是可用

if (isBindingAvaiable) {
  binding.freeWeekIv.setImageBitmap(it)
  binding.blurLayout.setBlurredView(binding.freeWeekIv)
}