我在我的NavigationHost类中有一个Composable,我用它导航到NotesScreen(),如下所示:

composable(
        route = NotesScreen.route + "/{$USER_ID_KEY}"
    ) { backStackEntry ->
        NotesScreen(
            navController = navController,
            userId = backStackEntry.arguments?.getString(USER_ID_KEY)
        )
    }

问题是,当我在NotesScreen()函数中读取userId字符串时,它仍然包括花括号作为传递的参数字符串的一部分,如"{NIsKtJ4QqteqSEwuMI7}".我怎样才能确保没有花括号就能得到干净的字符串?

推荐答案

当你打电话的时候

navController.navigate(NotesScreen.route + "/{$userId}")

您的最后一个字符串如下所示

notes/{NIsKtJ4QqteqSEwuMI7}

您的代码似乎故意添加了额外的{},然后与您的模式匹配

notes/{userId}

例如,NotesScreen.route之后的所有内容都用作userId--花括号表示userId参数的placeholder的位置.

因此,如果你不想在你的userId中增加额外的花括号,那么当你拨打navigate时,不要添加它们:

navController.navigate(NotesScreen.route + "/$userId")

Android相关问答推荐

fillMaxHeight中的分数在列内不起作用(android jetpack compose)

Kotlin DSL:为什么我可以从Play Store获取发布版本的日志(log)?

Android Gradle/Groovy,如何将文件复制到APK

如何阻止Gradle在编译时生成app-metadata.properties

在Jetpack Compose中从LazyColumn中删除项目时发生IndexOutOf边界异常

Android Jetpack Compose调用view-model函数仅一次

数据绑定在Android中等待填充值时显示未填充的值

可组合函数无限地从视图模型获取值

为什么我的 APK 中包含来自旧版 Android 支持库的类?

在本地通知中设置自定义声音

在一个函数中组合相同的流 struct

列语义在列中的第一个元素之后读取

React Native Android 应用程序在调试模式下运行良好,但当我们发布 apk 时,它会生成旧版本的应用程序

安卓模拟器打不开

如何在 React Native 中调试网络响应

在 Jetpack Compose 中包装内容

在 Jetpack Compose 中清除列表时可组合不重组

Int 传递给 Intent 但Android工作室说我传递了一个字符串

如何在 Jetpack Compose 中为中心对齐设置动画?

对话框中的内容不可见