相关疑难解决方法(0)

如何使用新版本的撰写导航传递可打包参数?

我有一个用 jetpack compose 制作的应用程序,它工作得很好,直到我将 compose 导航库从版本2.4.0-alpha07升级到版本2.4.0-alpha08 在 alpha08 版本中,在我看来,该类arguments的属性NavBackStackEntry是 a val,所以它不能像我们在 2.4.0-alpha07 版本中那样重新分配。在2.4.0-alpha08版本中如何解决这个问题?

我的导航组件是这样的:

@Composable
private fun NavigationComponent(navController: NavHostController) {
    NavHost(navController = navController, startDestination = "home") {
        composable("home") { HomeScreen(navController) }
        composable("details") {
            val planet = navController
                .previousBackStackEntry
                ?.arguments
                ?.getParcelable<Planet>("planet")
            planet?.let {
                DetailsScreen(it, navController)
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试使导航发生在详细信息页面的部分是在这个函数中:

private fun navigateToPlanet(navController: NavHostController, planet: Planet) {
    navController.currentBackStackEntry?.arguments = Bundle().apply {
        putParcelable("planet", planet)
    }
    navController.navigate("details")
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试过简单地应用到函数arguments的重复navigateToPlanet使用 …

android android-jetpack-navigation android-jetpack-compose

18
推荐指数
2
解决办法
2万
查看次数