我有一个带有一个 URL 的 Web 视图,每当它在 Web 视图中重定向时,我都会使用具有新标题的新 URL 再次加载相同的可组合项,因为重定向发生得如此之快,它发生在实际可组合项完全组成之前,因此它崩溃了java.lang.IllegalStateException:指定的子级已经有父级。您必须首先对子级的父级调用removeView()。我目前正在使用 ram Costa 的 compose 目标库
navigator.value?.navigate(direction = MenuViewDestination,onlyIfResumed = true)
Run Code Online (Sandbox Code Playgroud)
,我之前也使用过 compose 提供的导航,在这两种情况下我都面临着同样的问题,如果我仅使用恢复 true 进行导航,则页面由于某种原因不会自行导航,并且我无法按原样处理异常发生在内部。这里我附加了菜单可组合项中使用的可组合项来加载 URL,
/* Adding custom accompanist WebView*/
@SuppressLint("SetJavaScriptEnabled")
@Composable
fun LoadMenuWebView(mainViewModel: MainViewModel, webViewModel: MenuWebViewModel, url: String?) {
Timber.i("LoadWebView from menu $url")
val context = LocalContext.current
var extraHeaders: Map<String, String?>?
webViewModel.menuWebViewState.value = url?.let {
rememberWebViewState(
it
)
}
mainViewModel.currentWebViewClient.value = remember {
getWebViewClient(
context,
mainViewModel.backEnabled,
mainViewModel.progressVisible,
mainViewModel.cookieManager,
mainViewModel
)
}
val state by remember { webViewModel.menuWebViewState }
val …Run Code Online (Sandbox Code Playgroud) android illegalstateexception android-jetpack-navigation android-jetpack-compose