在导航图中找不到与请求 NavDeepLinkRequest 匹配的 Compose 导航目的地 NavGraph

DeK*_*kem 4 android-jetpack-navigation android-jetpack-compose

这是我的设置:

@Composable fun MyNavHost(navController: NavHostController = RememberNavController(), padding: PaddingValues) { val actions = Remember(navController) { MainActions(navController) }

NavHost(
    navController = navController,
    startDestination = TopLevelDestination.Home.route, modifier = Modifier.padding(padding)
) {
    composable(TopLevelDestination.Home.route) {
        HomeScreen(onNavigateToArticle = actions.navigateToArticle)
    }
    composable(
        "${MyRoute.ARTICLE_ROUTE}/${MyRoute.ARTICLE_ID}",
        arguments = listOf(navArgument(MyRoute.DATE_KEY) { type = NavType.LongType })
    ) { backStackEntry ->
        ArticleScreen(
            articleId = backStackEntry.arguments?.getLong(MyRoute.ARTICLE_ID)!!
        )
    }
  }
}

/**
 * Models the navigation actions in the app.
 */
class MainActions(navController: NavHostController) {
    val navigateToArticle: (Long) -> Unit = { articleId: Long ->
        navController.navigate("${MyRoute.ARTICLE_ROUTE}/${articleId}")
    }
}
Run Code Online (Sandbox Code Playgroud)

这是来自可点击的惰性列的文章项的代码

 Row(
    modifier = modifier
        .clickable { onNavigateToArticle(articleId) }
        .padding(10.dp)
        .heightIn(72.dp),
    horizontalArrangement = Arrangement.SpaceBetween,
    verticalAlignment = Alignment.CenterVertically
) 
Run Code Online (Sandbox Code Playgroud)

我得到以下异常:

java.lang.IllegalArgumentException: Navigation destination that matches request 
NavDeepLinkRequest{ uri=android-app://androidx.navigation/article/16788348 } cannot 
be found in the navigation graph NavGraph(0x0) startDestination=. 
{Destination(0xa2d96fd4) route=home}
Run Code Online (Sandbox Code Playgroud)

我读了这篇文章,看起来非常简单。我真的不明白我做错了什么。我已经在 stackoverflow 上阅读了一些答案。不幸的是它们不适用于我的情况。

DeK*_*kem 7

代替:

"${MyRoute.ARTICLE_ROUTE}/${MyRoute.ARTICLE_ID}"
Run Code Online (Sandbox Code Playgroud)

我只需要写

"${MyRoute.ARTICLE_ROUTE}/{${MyRoute.ARTICLE_ID}}"
                          ^                     ^
                          |                     |
                            extra brackets here
Run Code Online (Sandbox Code Playgroud)

所以多了一对括号(围绕参数)。