我有一个可点击的行,可以重定向到 FoodProducts:
.clickable {
// Navigate to FoodProductsScreen when clicked
Log.d("Navigation", "Category ID: ${category.id}")
navController.navigate("${NavGraph.FoodProducts}?categoryId=${category.id}")
},`
当我在这里打印category.id时,它在控制台上记录2,但是当我在NavHost中打印它时,它显示0:
`
composable(NavGraph.FoodProducts) { backStackEntry ->
val categoryId = backStackEntry.arguments?.getInt("categoryId") ?: 2
Log.d("Navigation", "Received Category ID: $categoryId")
FoodProductsScreen(navController, categoryId)
}`
食品屏幕:
`@Composable
fun FoodProductsScreen(navController: NavController, categoryId: Int) {
val productsInCategory = products.filter { it.id == categoryId }
Column(
modifier = Modifier
.fillMaxWidth()
.padding(8.dp)
) {
Text(text = "${categoryId}")
}
LazyColumn {
items(productsInCategory) { product ->
FoodProductItem(product = product)
}
}
}`
我尝试了很多方法,但似乎没有任何效果......
我尝试从最后一个视图中检索参数,如下所示:
FoodProductsScreen(navController, backStackEntry.arguments?.getInt("categoryId") ?: 1)
但没成功
val categoryId = navController.currentBackStackEntry
?.savedStateHandle?.get<Int>("categoryId") ?: 2
你能试试这个吗?
我认为最简单的方法。
val myPassedArg = 1
navController.navigate("foodProductsScreenRoute" +"?passedArg=$myPassedArg")
在导航图中:
composable(route = "foodProductsScreenRoute" + "?passedArg={myArg}"){ backStackEntry ->
val defaultValue = 2
val arg = backStackEntry.arguments?.getInt("myArg")?:defaultValue
FoodProductsScreen(navController = navController,arg)
}