关于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回答
-
这种情况下lateinit不适用的。要么用一个类包一下webview然后关闭的时候在这个类内部将其置为null,要么就用可空类型。或者也可以参考: https://github.com/bennyhuo/ReleasableVar00
相似问题