如何在 Kotlin 中为泛型设置 null

How to set null for generics in Kotlin

提问人:Jojo Drink 提问时间:10/7/2023 最后编辑:Jojo Drink 更新时间:10/7/2023 访问量:50

问:

在我的应用程序中,我使用 ViewBinding 来访问视图,为此我创建了 Base Fragment 并编写了以下代码。
onDestroy方法中,我想要清空视图,但显示错误。
我的 BaseFragment 代码:

abstract class BaseFragment<T : ViewBinding>(private val bindingInflater: (inflater: LayoutInflater) -> T) : Fragment() {

    //Other
    var isNetworkAvailable = true

    private lateinit var viewBinding: T

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        viewBinding = bindingInflater(inflater)
        return viewBinding.root
    }

    override fun onDestroy() {
        super.onDestroy()
        viewBinding = null
    }
}

在这一行中显示此错误。Null can not be a value of a non-null type TviewBinding = null

我该如何解决?

android kotlin android-viewbinding

评论

0赞 Pawel 10/8/2023
仅供参考,您应该销毁您的观点及其绑定。如果片段进入分离状态(例如:在视图寻呼机中),则会出现细微的差异。onDestroyView

答:

1赞 ItzDavi 10/7/2023 #1

如果要声明可为 null 的类型或变量,则应在类型声明之后使用 。?

遵循本文档

val string : String = null  --> Nope, String is not nullable
val string : String? = null --> Yes, String is nullable

若要为变量或类型赋值,必须声明该值可为 null。null