Jetpack Navigation Deep Link с неправильной кнопкой ActionBar

Когда я открываю свое приложение с помощью значка запуска, все кнопки навигации и ActionBar работают нормально. Но когда я получаю доступ к приложению по явной глубокой ссылке, мой ActionBar запутывается.

Моя основная навигация:

-> [TaskListFragment] -> [TaskDetailFragment]

При открытии по значку программы запуска кнопка "Назад" отображается правильно:

В моем приложении вы можете создать тревогу для каждой задачи, поэтому, когда звонит будильник и пользователь нажимает на уведомление, процесс выглядит так:

-> [TaskDetailFragment]

Затем он показывает неправильную кнопку: Нажав на иконку ящика, он возвращается к [TaskListFragment]. Поведение правильное, но значок ActionBar - нет.

Вот как я создаю глубокую ссылку:

NavDeepLinkBuilder(context)
            .setGraph(R.navigation.nav_graph)
            .setDestination(R.id.taskDetailFragment)
            .setArguments(arguments)
            .createPendingIntent()

Вот полный код на GitHub.

MainActivity со всеми шаблонами навигации.

И мой навигационный график.

Я также безуспешно пробовал несколько базовых реализаций, таких как образец компонентов подсолнечника и архитектуры Google.

0 ответов

Я открыл средство отслеживания проблем, как только подумал, что это ошибка в библиотеке.

На самом деле проблема в том, что я использую ActionBarDrawerToggle для создания настраиваемой анимации ящика на основе разработчика, который ответил на проблему:

"[...] в документации по навигации предлагается вообще не использовать ActionBarDrawerToggle, поскольку переходы обрабатываются за вас"

И в документации по навигации:

Примечание. При использовании NavigationUI помощники на верхней панели приложений автоматически переходят между значком выдвижного ящика и значком "Вверх" при изменении текущего места назначения. Вам не нужно использовать ActionBarDrawerToggle.

Как только мне понадобится ActionBarDrawerToggleдля пользовательской анимации я не могу ее удалить. Чтобы решить эту проблему, мне нужно сначала вызвать настройку моего ящика сActionBarDrawerToggle определение, а затем вызовите методы настройки навигации, например NavigationUI.setupActionBarWithNavController().


TL;DR

Если вы используете ActionBarDrawerToggle с Jetpack Navigation убедитесь, что вы установили ActionBarDrawerToggle прежде чем позвонить Navigation методы.

Другие вопросы по тегам