无法从Kotlin中的另一个类访问var

时间:2019-04-27 18:27:41

标签: android kotlin

我已经在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
        }
    }
}

2 个答案:

答案 0 :(得分:1)

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

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

private inner class MyWebViewClient : WebViewClient()

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

答案 1 :(得分:0)

您的代码应该可以正常工作,很可能是问题出在progressView中的xml上,它设置为match_parent并且与您的webView重叠。
view.visibility = View.VISIBLE添加spinner.visibility = View.GONE

之后尝试