Ich habe eine Android-Anwendung mit Verfassen und Navigation. Ich habe 1 Aktivität und viele Bildschirme. Einer dieser Bildschirme ist MerkeziSahne und der andere ist TalimSahnesi. Beim Öffnen der Anwendung wird MerkeziSahne angezeigt. Mit einer Schaltfläche in MerkeziSanhe können wir zu TalimSahnesi navigieren.
Wenn ich auf die Schaltfläche TalimSahnesi klicke, passiert Folgendes:
- < li>MerkeziSahne wird gerufen,
- Dann wird TalimSahnesi gerufen und gezogen,
- Wieder wird MerkeziSahne gerufen,
< li>Andererseits TalimSahnesi wird aufgerufen und gezeichnet. - Nachdem TalimSahnesi aufgerufen wurde, bevor alles gezeichnet ist,
TalimSahnesi wird erneut aufgerufen und gezeichnet.
Hier ist der Code für NavHost:
Code: Select all
@Composable
fun NavigationView(
navController: NavHostController,
ustIdareCubuguDataBuilder: (navController: NavHostController, sahne: Sahne) -> UstIdareCubuguData,
merkeziSahneViewModel: MerkeziSahneViewModel,
talimSahnesiViewModel: TalimSahnesiViewModel
) {
NavHost(
modifier = Modifier.background(MaterialTheme.colorScheme.surface),
navController = navController,
startDestination = Sahne.MerkeziSahne.hedef) {
composable(
Sahne.MerkeziSahne.hedef,
enterTransition = {
slideIntoContainer(
AnimatedContentTransitionScope.SlideDirection.Right,
animationSpec = tween(700)
)
},
exitTransition = {
slideOutOfContainer(
AnimatedContentTransitionScope.SlideDirection.Left,
animationSpec = tween(700)
)
}) {
merkeziSahneViewModel.ustIdareCubuguData = ustIdareCubuguDataBuilder(navController, Sahne.MerkeziSahne)
merkeziSahneViewModel.talimeBaslaOnClick = { navController.navigateOnce(Sahne.TalimlerSahnesi.hedef) }
MerkeziSahne(merkeziSahneViewModel)
}
composable(
Sahne.TalimlerSahnesi.hedef,
enterTransition = {
slideIntoContainer(
AnimatedContentTransitionScope.SlideDirection.Left,
animationSpec = tween(700)
)
},
exitTransition = {
slideOutOfContainer(
AnimatedContentTransitionScope.SlideDirection.Right,
animationSpec = tween(700)
)
}) {
val ustIdareCubuguData = ustIdareCubuguDataBuilder(navController, Sahne.TalimlerSahnesi)
talimSahnesiViewModel.ustIdareCubuguData = ustIdareCubuguData
TalimlerSahnesi(talimSahnesiViewModel)
}
}
}
private fun NavController.navigateOnce(hedef: String) {
if (this.currentDestination?.route !== hedef) {
this.navigate(hedef)
}
}
private fun NavController.navigateOnce(hedef: String,
builder: NavOptionsBuilder.() -> Unit) {
if (this.currentDestination?.route !== hedef) {
this.navigate(hedef, builder)
}
}
Vielen Dank für Ihre Hilfe.