Экран навигации по созданию Android вызывается много разAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Экран навигации по созданию Android вызывается много раз

Сообщение Anonymous »

У меня есть установление, где я не уверен, является ли это нормальным или проблемой. Я хотел быть уверен, что это приемлемо и задал этот вопрос. Вот подробности: < /p>
У меня есть приложение для 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)
}
}

Я добавил эти функции NavigationOnce. Думал, что дело в том, что эти экраны вызывались много раз. Однако это ничего не изменило.
Спасибо за помощь.

Подробнее здесь: https://stackoverflow.com/questions/769 ... many-times
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»