MaxUt
06/21/2021, 3:38 PMjava.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
Any ideas ?@Composable
fun AppWebView(
urlToRender: String,
type: WebViewType,
onWebViewBackStateChange: (Boolean) -> Unit,
) {
val client = object : WebViewClient() {
override fun doUpdateVisitedHistory(view: WebView?, url: String?, isReload: Boolean) {
onWebViewBackStateChange(view!!.canGoBack())
super.doUpdateVisitedHistory(view, url, isReload)
}
}
if (WebViewSingleton.webViews[type] === null) {
AndroidView({ context ->
WebView(context).apply{
webViewClient = client
}.also { WebViewSingleton.webViews[type] = it }
})
DisposableEffect(WebViewSingleton.webViews[type], urlToRender) {
WebViewSingleton.webViews[type]?.loadUrl(urlToRender)
onDispose {
WebViewSingleton.webViews[type]?.stopLoading()
}
}
} else {
// When recomposing, we enter here and the app crashes
AndroidView({
WebViewSingleton.webViews[type]!!
})
}
}
val parent = WebViewSingleton.webViews[type]!!.parent as ViewGroup
WebViewSingleton.webViews[type]!!.removeView(parent)
AndroidView({
WebViewSingleton.webViews[type]!!
})