Android 与Jetpack Compose一起使用时,WebView在输入时崩溃
当使用Jetpack Compose创建一个非常简单的Android 与Jetpack Compose一起使用时,WebView在输入时崩溃,android,android-jetpack-compose,Android,Android Jetpack Compose,当使用Jetpack Compose创建一个非常简单的WebView包装时,当我输入任何文本时,应用程序就会崩溃。这是一只虫子,还是我在做傻事?有关守则: class MainActivity:AppCompatActivity(){ 重写创建时的乐趣(savedInstanceState:Bundle?){ super.onCreate(savedInstanceState) 设置内容{ WebViewC() } } } @组合的 趣味WebViewC(){ 返回AndroidView(vie
WebView
包装时,当我输入任何文本时,应用程序就会崩溃。这是一只虫子,还是我在做傻事?有关守则:
class MainActivity:AppCompatActivity(){
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
设置内容{
WebViewC()
}
}
}
@组合的
趣味WebViewC(){
返回AndroidView(viewBlock={context->
WebView(上下文)。应用{
layoutParams=ViewGroup.layoutParams(
ViewGroup.LayoutParams.MATCH_父级,
ViewGroup.LayoutParams.MATCH_父级
)
webViewClient=对象:webViewClient(){
override fun shouldOverrideUrlLoading(视图:WebView?,url:字符串?):布尔值{
返回错误
}
}
加载URL(“https://google.com")
}
})
}
坠机事件:
E/MessageQueue-JNI: java.lang.IllegalStateException: KeyEvent can't be processed because this key input node is not active.
at androidx.compose.ui.input.key.KeyInputModifier.processKeyInput(KeyInputModifier.kt:62)
at androidx.compose.ui.platform.AndroidComposeView.sendKeyEvent(AndroidComposeView.kt:173)
at androidx.compose.ui.platform.AndroidComposeView.dispatchKeyEvent(AndroidComposeView.kt:177)
看起来这实际上是Compose中的一个bug。更新到最新版本(
alpha09
在回答这个问题时)似乎已经解决了这个问题。如果你想动态更改url,你也需要添加更新方法
@SuppressLint("SetJavaScriptEnabled")
@Composable
fun WebPageScreen(urlToRender: String) {
AndroidView(factory = {
WebView(it).apply {
layoutParams = ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT
)
webViewClient = WebViewClient()
loadUrl(urlToRender)
}
}, update = {
it.loadUrl(urlToRender)
})
}
只有当我在emulator上运行时使用计算机上的键盘时,它才会崩溃-手机上的键盘对你有用吗?我在硬件手机上也看到了这一点。应用程序正在使用compose 1.0.0-Alpha07它应该是一个compose错误。如果canGoBack=true,当我们单击设备的后退按钮时,不仅是键盘输入,webView也会崩溃。我找到了解决后退按钮问题的方法,但与键盘输入盒无关。如果我们真的需要显示带有输入字段的网页,请通过外部浏览器打开该网页。