Компонент навигации Android: Начните с места назначения, отличного от дома, программно? - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь реализовать несколько navigation controller с множественным обратным стеком BottomNavigationView, в соответствии с примерами github .Однако в этом примере для каждой вкладки используется отдельный навигационный граф, что упрощает задачу.В моем случае мне нужно использовать один и тот же график навигации для всех моих вкладок, но с разными начальными назначениями, чем «домашнее назначение», установленное в графике навигации.

Пока мне удалось изменитьNavigationExtensions файл для получения единого навигационного графа для всех вкладок, и я получаю несколько navControllers с их собственными задними стеками, но я не могу понять, как запустить навигационный граф в другом месте назначения.

Я пытался использовать .navigate при получении navcontroller, но так как он еще не подключен, он не работает.Есть идеи как этого добиться?Спасибо.

1 Ответ

1 голос
/ 02 июля 2019

У нас было требование, чтобы отображаемый стартовый экран зависел, если бы пользователь вошел в систему. Мы сделали следующее:

  1. Удалите приложение: startDestination на навигационной панели XML, если оно существует
  2. На нашем основном занятии onCreate() мы создаем объект NavGraph:

    NavController navController = Navigation.findNavController(this, R.id.your_nav_hostfragment);    
    NavGraph navGraph = navController.getNavInflater().inflate(R.navigation.your_navigation_xml);
    
  3. Затем, в зависимости от ваших требований, вы можете установитьначать назначение на NavGraph с помощью setStartDestination, затем примените NavGraph к NavController:

        if (condition) {
            navGraph.setStartDestination(R.id.screen1);
        } else {
            navGraph.setStartDestination(R.id.screen2);
        }
        navController.setGraph(navGraph);
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...