关于lateinit变量的重置

来源:4-9 属性代理

小卷子000

2023-05-31

关于lateinit变量的重置
老师,我一直对lateinit的变量有一个问题。我想把lateinit修饰的变量重置为null。
比如这个场景,android的activity中使用了webview,由于某些原因在需要销毁webview。声明webview时使用lateinit,语法上不允许我修改为null。
但是我想把webview重置为null。我应该怎么解决这个问题?
代码大概如下:

class WebActivity:AppCompatActivity() {


    private lateinit var webview: WebView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        webview = findViewById(R.id.webivew)

    }

    fun removeWebView() {
        //这里会报错
        webview = null
    }

}
写回答

1回答

bennyhuo

2023-05-31

这种情况下lateinit不适用的。要么用一个类包一下webview然后关闭的时候在这个类内部将其置为null,要么就用可空类型。或者也可以参考: https://github.com/bennyhuo/ReleasableVar
0
0

Android首选开发语言Kotlin入门与进阶

Google I/O大会钦定Android一级开发语言,现在不学,等待何时

3122 学习 · 387 问题

查看课程