首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Jetpack组合中使用导航时缺少道路参数值

在Jetpack组合中使用导航时缺少道路参数值
EN

Stack Overflow用户
提问于 2022-07-26 16:40:58
回答 2查看 216关注 0票数 1

我创建了一条使用导航(使用Jetpack撰写)的道路,如下所示

代码语言:javascript
复制
                composable(CatLifeScreen.AddCatFormScreen.route + "?catId={catId}",
                    arguments = listOf(
                        navArgument(name = "catId") {
                            nullable = true
                        }
                    )) {
                    bottomBarState.value = false

                    val catId = it.arguments?.getInt("catId")

                    AddEditCatFormBody(
                        idOfCat = catId,
                        navController = navController,
                        addEditCatViewModel = addEditCatViewModel,
                    )

如果我不加任何论据,这条路就好用了。

代码语言:javascript
复制
onClick = { navController.navigate(CatLifeScreen.AddCatFormScreen.route) }

如果我定义了一个参数it.arguments?.getInt("catId")是0,而我传递的参数不是0。

代码语言:javascript
复制
IconButton(onClick = { navController.navigate(CatLifeScreen.AddCatFormScreen.route + "?catId=$idOfCat") } //idOfCat = 1

有人有线索要跟踪吗?我已经被困了很久了

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-27 15:29:25

终于找到了答案。对于像我这样被困的人:

  1. 将您希望接收的

的数据类型放在

  1. 整数值不能为空(如果您这样做,应用程序将崩溃)。(请参阅文档https://developer.android.com/guide/navigation/navigation-pass-data#supported_argument_types )。在我的例子中,我没有指定

类型

  1. 使用getString( key )获取参数中的键,并将其转换为Int (只有当您不指定类型时,因为您希望它是可空的)。您可能会以不同的方式处理它(比如在没有要传递的值时使用-1,而不是空值)

composable(CatLifeScreen.AddCatFormScreen.route + "?catId={catId}",参数= listOf( navArgument(name = " catId ") { nullable = true // I不指定类型,因为Integer不能为nullable } )) { bottomBarState.value = false val catId= it.arguments?.getString("catId")?.toInt() //使用getString获取密钥()并强制转换为AddEditCatFormBody( idOfCat = catId,navController = navController,addEditCatViewModel = addEditCatViewModel,) }

票数 1
EN

Stack Overflow用户

发布于 2022-07-26 20:31:43

尝试输入参数类型,如下所示;

代码语言:javascript
复制
           arguments = listOf(
                navArgument("catId") {
                    type = NavType.IntType
                    nullable = true
                }
           )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73127002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档