Меню не обновляется в соответствии с навигацией контроллера - PullRequest
0 голосов
/ 19 сентября 2019

Описание: рассмотрим этот процесс: Фрагмент A -> Вход в систему -> Фрагмент B. Вы можете перейти от A к входу в систему через в верхнем правом меню (значок дополнительных действий).Мне бы хотелось, чтобы после того, как пользователи достигли входа в систему, пути назад нет.Я имею в виду

Ожидаемое поведение:

  • Пользователь открывает приложение (фрагмент A)
  • Пользователь переходит к логину (кнопка возврата не отображается)на панели инструментов)
  • Пользователь нажимает назад (собственный назад (ТОЛЬКО ВАРИАНТ))
  • Приложение закрывается

Я управляю этим с помощью

 navigationController.navigate(
                        R.id.fragment_login, null, NavOptions.Builder()
                        .setPopUpTo(R.id.fragment_a, true)
                        .build()
)

Фактическое поведение:

  • Пользователь открывает приложение (фрагмент A)
  • Пользователь переходит к «Вход в систему» ​​-> кнопка «Назад» продолжает отображаться
  • Пользовательнажимает назад
    • Пользователь щелкает по родной спине -> приложение закрывается, как и ожидалось
    • Пользователь нажимает кнопку назад на панели инструментов -> он переходит к фрагменту A

У меня есть пример в https://github.com/rafaelaguerra/navigation_components_example/tree/menu_issue

1 Ответ

0 голосов
/ 19 сентября 2019

Мне удалось объединить два topLevelDestinationIds

activity_base_toolbar_main.setupWithNavController(
        navController = navigationController,
        configuration =
        AppBarConfiguration.Builder(
            R.id.fragment_login,
            R.id.fragment_a
        ).build()
    )

с

 override fun onOptionsItemSelected(item: MenuItem): Boolean {
        return when (item.itemId) {
            R.id.fragment_login -> {
                navigationController.navigate(
                        R.id.fragment_login, null, NavOptions.Builder()
                        .setPopUpTo(R.id.fragment_a, true)
                        .build()
                )
    ...
}

Но для меня это все еще не чистое решение

...