【问题标题】:Jetpack Compose App Navigation wont redirect to another page?Jetpack Compose App Navigation 不会重定向到另一个页面?
【发布时间】:2021-08-27 11:22:30
【问题描述】:
@Composable
fun MainLayout(viewModel: GoalsViewModel){
    val navController = rememberNavController()
    NavHost(
        navController = navController,
        startDestination = "Home",
        modifier = Modifier.padding(16.dp)
    ) {
        composable("Home"){
            BodyContent(navController)
        }
        composable("Goals"){
            GoalScreen(viewModel, navController)
        }
        composable("ViewGoals"){
            ViewGoalsScreen(viewModel)
        }
        composable("Fitness"){
            FitnessForm()
        }
    }

    Scaffold(
        topBar = {
            TopNavBar()
        }
    ){
        BodyContent(navController)
    }

}

为什么我主页上的按钮什么都不做?它会从它调用的可组合函数中打印出来,但不会重定向或做任何事情

【问题讨论】:

  • 你的BodyContent的代码是什么?
  • 好的,所以你在这里遗漏了很多东西。主屏幕上的按钮是什么?您到底在哪里使用 navController?为什么你有这样实现的脚手架和 NavHost?

标签: navigation android-jetpack-compose jetpack-compose-navigation


【解决方案1】:

您需要将 NavHost 移动到 Scaffold 主体:

@Composable
fun MainLayout(viewModel: GoalsViewModel){
    val navController = rememberNavController()

    Scaffold(
        topBar = {
            TopNavBar()
        }
    ){
        NavHost(
            navController = navController,
            startDestination = "Home",
            modifier = Modifier.padding(16.dp)
        ) {
            composable("Home"){
                BodyContent(navController)
            }
            composable("Goals"){
                GoalScreen(viewModel, navController)
            }
            composable("ViewGoals"){
                ViewGoalsScreen(viewModel)
            }
            composable("Fitness"){
                FitnessForm()
            }
        }
    }
}

【讨论】:

    猜你喜欢
    • 2017-08-03
    • 2017-07-14
    • 1970-01-01
    • 1970-01-01
    • 2012-10-12
    • 2015-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多