Jetpack 导航:如何检查路线是否已经存在以避免在导航图中找不到 IllegalArgumentException

问题描述 投票:0回答:0

我正在动态构建导航图,但调用 navigate() 的代码发现该路线尚不存在。这可能是竞争条件或错误,但我仍然想优雅地处理它而不是崩溃

java.lang.IllegalArgumentException: Navigation destination that matches request NavDeepLinkRequest{ uri=android-app://androidx.navigation/XXX } cannot be found in the navigation graph NavGraph(0x0) startDestination={Destination(0x78d845ec) route=home}

在致电

navController.exists(route)
之前,我找不到任何可以使用的
.navigate()
选项。

Column(modifier = Modifier
       .fillMaxSize()   
       .align(Alignment.CenterStart)
       .clickable {     
           navController.navigate(item.key) 
       }) { ...  }  

捕获异常是优雅处理它的唯一选择吗?

有一些建议,例如检查

navController.currentBackStackEntry?.destination?.id
,但这不一定是预期的目的地。

android android-jetpack-compose android-jetpack android-jetpack-navigation
© www.soinside.com 2019 - 2024. All rights reserved.