Ошибка Android Studio Kotlin в всплывающем сообщении вне функции onCreate

#android-studio #kotlin #webview #toast

#android-студия #котлин #веб-просмотр #тост

Вопрос:

Я получаю ошибки в своем всплывающем сообщении со следующим:

     // JS FUNCTIONS FOR THE WEBVIEW
    private fun loadJs(webView: WebView) {
        webView.loadUrl(
        """javascript:(function f() {
                var btns = document.getElementsByTagName('button');
                for (var i = 0, n = btns.length; i < n; i  ) {
                  if (btns[i].getAttribute('id') === 'testBTN') {
                    btns[i].setAttribute('onclick', 'Android.onClicked()');
                  }
                }
              })()
            """
        )
    }

    // KOTLIN FUNCTIONS THAT JS CAN CALL
    object AndroidJSInterface {
        @JavascriptInterface
        fun onClicked() {
            Utils.showToast("in the js")
            Log.i("MK", "JS BUTTON CLICKED")
        }
    }
    /*
    * ##############################################################################################
    */

    object Utils {
        fun showToast(msg: String?, ctx: Context = MainActivity().applicationContext) {
            Toast.makeText(ctx, msg, Toast.LENGTH_SHORT).show()
        }
    }
 

Приведенные выше коды прослушивают нажатия кнопок моего веб-просмотра, журнала. я действительно даю мне результаты, когда я нажимаю свою целевую кнопку. Тост выдает мне ошибку.

 W/System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference
 

Каков наилучший способ вызвать ApplicationContext таким образом?
Я кодирую это в Android Studio Kotlin

Заранее благодарим вас за помощь.

Комментарии:

1. MainActivity() Почему вы создаете экземпляр действия самостоятельно?

2. Привет @AnimeshSahu, спасибо за ответ, каков наилучший способ установить, какой контекст использовать таким образом? Я пытался передать его с помощью вызова функции loadJS, но получал ту же ошибку