android - 无法从 Kotlin 中的另一个类访问 var
问题描述
我在 MainActivity 中初始化了一个 ProgressBar,并在 onCreate 中为其分配了一个视图。在我的 MainActivity 中,我创建了一个 WebViewClient 类,我想更改其中微调器的可见性,但由于某种原因我不能。
class MainActivity : AppCompatActivity() {
lateinit var myWebView: WebView
lateinit var spinner: ProgressBar
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
spinner = findViewById(R.id.progressBar1)
myWebView = findViewById(R.id.webview)
myWebView.loadUrl("www.example.com")
myWebView.webViewClient = MyWebViewClient()
}
private class MyWebViewClient : WebViewClient() {
override fun onPageFinished(view: WebView, url: String?) {
super.onPageFinished(view, url)
view.visibility = View.VISIBLE
//Here I want to change the visibility of spinner
}
}
}
解决方案
如果你想访问外部类的成员,你应该使用内部类而不是嵌套类。请参阅:https ://kotlinlang.org/docs/reference/nested-classes.html 。
在您的示例中,您应该添加inner
:
private inner class MyWebViewClient : WebViewClient()
请注意,使用内部类很容易引入内存泄漏,因为每个内部类都包含对外部类的引用。
推荐阅读
- android - Android Studio Loaders 自 Android P (API 28) 起已被弃用?
- css - 固定位置不适用于 Safari 移动设备
- amazon-web-services - 插入时的 Redshift 异常
- swift - 在 Swift 中,如何在不实际调用该方法的情况下测试一个对象是否实现了一个通过签名不同的可选协议方法?
- python - 按日期python重命名文件夹中的文件
- java - Spring中通过字段的不满意的依赖错误
- .htaccess - 使用指向 index.php 的 2 个参数编写干净的 URL
- java - 找不到指定的文件?
- crate - Crate DB 2 节点设置
- cassandra - Cassandra 查询特定 ID 的特定列的最大值