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