首页 > 解决方案 > 无法从 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
        }
    }
}

标签: androidkotlin

解决方案


如果你想访问外部类的成员,你应该使用内部类而不是嵌套类。请参阅:https ://kotlinlang.org/docs/reference/nested-classes.html 。

在您的示例中,您应该添加inner

private inner class MyWebViewClient : WebViewClient()

请注意,使用内部类很容易引入内存泄漏,因为每个内部类都包含对外部类的引用。


推荐阅读