У меня есть приложение для Android с Compose и Navigation. У меня 1 активность и много экранов. Одним из этих экранов является Меркесисан, а другой - Талимсхнесси. Когда приложение открыто, отображается Merkezisahne. С помощью кнопки в Merkezisanhe мы можем перейти к Talimsahnesi. li> Merkezisahne называется, < /li>
Тогда Talimsahnesi называется и нарисован, < /li>
Снова Merkezisahne называется, < /li>
< li> снова талимсхнесси называется и нарисован, < /li>
После того, как талимсхнесси называется, прежде чем все будет нарисовано, < /li>
Talimsahnesi снова называется и нарисовано . < /li>
< /ol>
Почему это происходит? Это связано с состояниями для составления функций? Что -то вызывает столько перерывов?
Код: Выделить всё
@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)
}
}
Спасибо за помощь.
Подробнее здесь: https://stackoverflow.com/questions/769 ... many-times