【发布时间】:2020-03-03 04:48:17
【问题描述】:
这是我的 kotlin 代码:
class WebAppInterface(private val mContext: Context, private val myWebView: WebView) {
@JavascriptInterface
fun goToHello() {
val myWebView = myWebView
myWebView.loadUrl("file:///android_asset/hello.html")
}
}
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val myWebView: WebView = findViewById(R.id.webview)
myWebView.settings.javaScriptEnabled = true
myWebView.addJavascriptInterface(WebAppInterface(this, myWebView), "Android")
myWebView.loadUrl("file:///android_asset/index.html")
}
}
但这是崩溃。
原因:java.lang.Throwable:在线程“JavaBridge”上调用了 WebView 方法。所有 WebView 方法必须在同一个线程上调用。
我该如何解决这个问题? 我通过搜索找到了solution,但这是java代码。 Kotlin 和 Java 兼容,但由于语法错误而无法运行。 (我想是因为我不懂 Kotlin 和 Java。反正)
我是一个基于 JavaScript 的全栈开发人员,我没有任何 Android 知识,所以我只想使用 webviews。 但这对我来说也很困难。 (这就像我第一次学习 JavaScript 时的混乱时期。)
请告诉我解决方案。 附言。如果您有 Kotlin 的继承和范围概念的良好列表,请链接。
【问题讨论】:
-
请尝试评论
myWebView.loadUrl("file:///android_asset/hello.html")from 'fun goToHello(...)' 并在此处打印一些日志并检查它是否崩溃。