Невозможно получить доступ к var из другого класса в Kotlin - PullRequest
0 голосов
/ 27 апреля 2019

Я инициализировал ProgressBar в своем MainActivity и назначил ему представление в 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 ]

1 голос
/ 27 апреля 2019

Вы должны использовать внутренний класс вместо вложенного класса, если вы хотите получить доступ к членам внешнего класса. Смотри: https://kotlinlang.org/docs/reference/nested-classes.html.

В вашем примере вы должны добавить inner:

private inner class MyWebViewClient : WebViewClient()

Имейте в виду, что с помощью внутренних классов легко вызвать утечку памяти, поскольку каждый внутренний класс содержит ссылку на внешний класс.

0 голосов
/ 28 апреля 2019

Ваш код должен работать, скорее всего проблема в progressView в xml, он установлен на match_parent и просто перекрывает ваш webView.
Попробуйте после view.visibility = View.VISIBLE добавить spinner.visibility = View.GONE

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...