Чего мы пытаемся добиться, так это того, что когда пользователь нажимает на уведомление, он должен быть перенаправлен на определенный фрагмент. Этот целевой фрагмент отмечен на графике как startDestination
(у него есть собственный файл .xml
).
Чтобы создать PendinIntent
для этого, мы используем NavDeepLinkBuilder
следующим образом:
// `this` represents the notification service.
NavDeepLinkBuilder(this)
.setGraph(R.navigation.destination_graph)
.setDestination(R.id.start_destination)
.createPendingIntent()
где R.id.start_destination
— это идентификатор фрагмента, указанный в атрибуте app:startDestination
корневого тега navigation
в R.navigation.destination_graph
, также известном как начальный пункт назначения этого графа.
Если мы попытаемся использовать это, мы получим следующую ошибку. Если мы используем любой другой фрагмент, кроме помеченного как startDestination
, он работает без проблем.
Наш график — это это.
Что может быть в действительности и каков обходной путь?
РЕДАКТИРОВАТЬ: Если график такой же, как и приведенный выше, но в нем отсутствует атрибут android:id
и он не включен в BottomNavigationView
, ошибка изменится на Caused by: java.lang.IllegalStateException: unknown destination during deep link: 0
(строка 3)
EDIT2: описанный выше сценарий, но на этот раз график имеет идентификатор и не используется ни в одном BottomNavigationView. Ошибка становится Caused by: java.lang.IllegalStateException: unknown destination during deep link: test.ourapp.app:id/messages
start_destination
естьaction
, в коде вашего поста нетsetArgument
. Кроме того, вы можете попробовать использоватьNavController.createDeepLink()
для созданияdeepLink
, а затем создать свойpendingIntent
. - person Biscuit   schedule 28.02.2020