Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 与Jetpack Compose一起使用时,WebView在输入时崩溃_Android_Android Jetpack Compose - Fatal编程技术网

Android 与Jetpack Compose一起使用时,WebView在输入时崩溃

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

当使用Jetpack Compose创建一个非常简单的
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也会崩溃。我找到了解决后退按钮问题的方法,但与键盘输入盒无关。如果我们真的需要显示带有输入字段的网页,请通过外部浏览器打开该网页。