gpt4 book ai didi

android - 在 Jetpack Compose 中导航到没有先前脚手架的另一个屏幕

转载 作者:行者123 更新时间:2023-12-04 23:48:43 39 4
gpt4 key购买 nike

我的应用程序有一个带有 Scaffold 和 BottomNavigation 栏的主屏幕:

 override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val navController = rememberNavController()
MyApplicationTheme {
Scaffold(
bottomBar = {
BottomBar(navController = navController)
}
) {
NavigationGraph(navController = navController)
}
}
}
}
...
@Composable
fun NavigationGraph(navController: NavHostController){
NavHost(navController = navController, startDestination = BottomMenuOption.Home.route) {

composable(route = BottomMenuOption.Home.route) {
HomeScreen(navController = navController)
}

composable(route = BottomMenuOption.Settings.settings) {
SettingsScreen()
}
composable(route = BottomMenuOption.Profile.route) {
ProfileScreen()
}

composable(route = "feature") {
FeatureScreen()
}
}

}
FeatureScreen有自己的 ScaffoldtopBar而不是底部栏,当我从 HomeScreen 导航到它时,我想从主屏幕替换前一个,只看到一个 topBar 但相反,我在屏幕上看到了两个栏。
@Composable
fun FeatureScreen() {
Scaffold (
topBar = {
TopBar(" Feature Screen")
}
) {

}
}
有可能做到这一点吗?我认为它可以通过使用一个新的 Activity 来完成,但理想情况下,我想保持单一 Activity 的方法。

最佳答案

我建议创建一个这样的新函数:

@Composable
fun MainScaffold(
topBar: @Composable (() -> Unit) = {},
bottomBar: @Composable (() -> Unit) = {},
content: @Composable (PaddingValues) -> Unit){
Scaffold(
bottomBar = bottomBar,
topBar = topBar,
content = content
)
}
然后,在您的屏幕中使用这个主脚手架:
@Composable
fun HomeScreen(navController: NavHostController) {
MainScaffold(
bottomBar = { BottomBar(navController = navController) },
content = {
// content
})
}
并在您的功能屏幕中:
@Composable
fun FeatureScreen() {
MainScaffold (
topBar = {
TopBar(" Feature Screen")
}
) {
//content
}
}
并在 setContent
setContent {
val navController = rememberNavController()
VoiceAssistantJetpackComposeTheme {
NavigationGraph(navController = navController)
}}

关于android - 在 Jetpack Compose 中导航到没有先前脚手架的另一个屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70560579/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com