FindStartDestination() из navController.graph возвращает startRoute по умолчанию для запущенного навигационного графа NaAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 FindStartDestination() из navController.graph возвращает startRoute по умолчанию для запущенного навигационного графа Na

Сообщение Anonymous »

Основной навигационный узел

Код: Выделить всё

NavHost(
navController = appState.navController,
route = rootRoute,
startDestination = authGraphRoute,
) {

authGraph(appState)

editProfileListScreen(appState, appViewModel)

homeGraph(appState)
}
Навигационная диаграмма аутентификации

Код: Выделить всё

const val authGraphRoute = "auth_graph_route"

fun NavGraphBuilder.authGraph(
appState: InnoAppState
) {

navigation(
startDestination = splashRoute,
route = authGraphRoute
) {

splashScreen(appState)

onboardingScreen(appState)

signInScreen(appState)

otpScreen(appState)

notificationPermissionScreen(appState)

appUpdateScreen(appState)

}

}
переход к коду экрана редактирования списка профилей

Код: Выделить всё

appState.navController.navToEditProfileListScreen(){
popUpTo(authGraphRoute){
inclusive = true
}
}
переход к домашнему графику из списка редактирования профиля

Код: Выделить всё

appState.navController.navigateToHomeGraph(){
popUpTo(editProfileListScreenRoute){
inclusive = true
saveState = false
}
launchSingleTop = true
restoreState = true
}
код навигации по нижнему элементу навигации

Код: Выделить всё

fun navigateToTopLevelDestination(topLevelDestination: BtmBarScreen) {

val topLevelNavOptions = navOptions {
// Pop up to the start destination of the graph to
// avoid building up a large stack of destinations
// on the back stack as users select items
popUpTo(navController.graph.findStartDestination().id) {
saveState = true
}
// Avoid multiple copies of the same destination when
// reselecting the same item
launchSingleTop = true
// Restore state when reselecting a previously selected item
restoreState = true
}
when (topLevelDestination) {
BtmBarScreen.HomeGraph -> navController.navigateToHomeGraph(topLevelNavOptions)
BtmBarScreen.MyList -> navController.navToMyWatchListGraph(topLevelNavOptions)
BtmBarScreen.LiveTvGraph -> navController.navigateToLiveTvGraph(topLevelNavOptions)
BtmBarScreen.BrowseGraph -> navController.navigateToBrowseGraph(topLevelNavOptions)
BtmBarScreen.YouGraph -> navController.navToYouGraph(topLevelNavOptions)
}
}
У меня есть другие графики навигации для остальных пунктов назначения верхнего уровня. Проблема здесь в том, что метод findStartDestination() должен возвращать в качестве результата homeGraphRoute, но он возвращает SplashRoute. поэтому, используя navOptions в NavigationToTopDestination при нажатии на нижний элемент навигации, каждый раз создается новый экземпляр экрана и модели представления.

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

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

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

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

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

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

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