#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, но получал ту же ошибку