NavDeepLinkBuilder: глубокая ссылка на startDestination

Чего мы пытаемся добиться, так это того, что когда пользователь нажимает на уведомление, он должен быть перенаправлен на определенный фрагмент. Этот целевой фрагмент отмечен на графике как 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


person SnuKies    schedule 14.11.2019    source источник