android 从一个可组合对象导航到另一个可组合对象时,从字符串中移除“+”

mnowg1ta  于 2023-02-27  发布在  Android
关注(0)|答案(2)|浏览(139)

我正在从一个可组合对象导航到另一个可组合对象,并且我有一个参数列表,其中一个参数是日期字符串2023-02- 23 T10:18:32.282+00:00,当通过组合参数发送此参数并使用键dueDate获取相同的字符串时,我得到以下输出:2023年2月23日上午10时18分32秒282秒00时00分
这一个不包含一个'+',这是一个错误的jetpack组成?这里是我的代码:

navController.navigate(PosTempoRoute.LOAN_CONFIRMATION.getDestinationKey() +
"?supplierName=${supplierName}&dueDate=${dueDate}")

接收时:

dueDateText = getString("dueDate") ?: "",
inb24sb2

inb24sb21#

一个肮脏的解决方法是使用${dueDate.replace(“+",“%2B”)},直到google修复这个问题。但是你不能对每个字符串都这样做,你可能总是错过一些东西

lb3vh1jj

lb3vh1jj2#

这就是我们如何通过组合导航库将数据从一个可组合函数发送到另一个可组合函数👇

第一个屏幕

您可以通过当前堆栈条目发送数据,您必须在navHostController示例中设置键和值。

val navHostController = rememberNavController()
    Button(onClick = {
        // passing data from one screen to another screen
        navHostController.currentBackStackEntry?.savedStateHandle?.set("key_name","value")
        navHostController.navigate("Second_Screen")
    }) {

    }

第二个屏幕

val value = navHostController.previousBackStackEntry?.savedStateHandle?.get<String>("key_name") ?: ""
Text(text = value)

在第二个屏幕中,您可以从之前的backstack条目中获取数据,也可以设置null safety,否则当您返回时应用程序将崩溃。

相关问题