我正在使用 compose 开发副项目,我对 Compose 导航感兴趣。我想要的是将 Parcelable 对象从一个可组合屏幕传递到另一个。所以导航是这样的:
composable(
route = Screen.DetailsScreen.route,
arguments = navArgument(PARAMETER_MOVIE_KEY) {
NavType.ParcelableType(Movie::class.java)
}
) {
DetailsScreenGuide(navController, it)
}
从主屏幕导航时,我将parcelable对象放到NavController.currentBackStackEntry
。
navController.currentBackStackEntry?.arguments?.putParcelable(
"movieArgument",
homeScreenNavGraphDataModel.movie
)
navController.navigate(route) // here, route = "movieDetails/movie"
然后,在调用 MovieDetails 可组合屏幕之前,我尝试从 navController.previousBackStanEntry
获取电影对象。
val movie = remember {
navController.previousBackStackEntry?.arguments?.getParcelable<Movie>(
"movieArgument"
)
}
但在这里,movie
变量为空,我无法接收该对象。 (导航正在运行,它正在扩充 MovieDetails 可组合功能
你能帮我调试这些代码片段还是我在某处弄错了?