Я пытаюсь открыть фрагмент с аргументами из моего уведомления. На самом деле, в моем случае у меня есть аудиоплеер, работающий со службой переднего плана с уведомлением, и теперь я хочу перейти к своему фрагменту для этого конкретного аудио, передав идентификатор аудио, когда пользователь нажимает на уведомление.
Как перейти от службы к фрагменту навигации, используя, вероятно, ожидающее намерение?
Ответы (1)
Вы можете открыть свою активность с помощью PendingIntent
, а затем открыть свой фрагмент, обработав Intent
внутри своей активности.
или этот ответ из похожей темы
NavDeepLinkBuilder:
val pendingIntent = NavDeepLinkBuilder(context)
.setComponentName(YourActivity::class.java)
.setGraph(R.navigation.your_nav_graph)
.setDestination(R.id.your_destination)
.setArguments(bundle)
.createPendingIntent()
//then
notificationBuilder.setContentIntent(pendingIntent)
person
Beyazid
schedule
29.04.2019
это неуклюже, когда много навигации. Разве ребята из Navigation Architecture не сделали для этого никаких Utils? Я имею в виду, что обработка навигации с намерением проще.
- person Riajul; 29.04.2019
Вы можете посмотреть этот пост. stackoverflow.com/a/55245317/11181035
- person Beyazid; 29.04.2019
О, сделал это! Спасибо, это должен быть ответ на мой вопрос.
- person Riajul; 29.04.2019
Это был действительно очень быстрый ответ, вы, ребята, потрясающие ... еще раз спасибо.
- person Riajul; 29.04.2019
Это воссоздает мой фрагмент. Есть ли способ вместо этого создать мой сохраненный фрагмент?
- person mhashim6; 07.07.2019
Я не могу воссоздать backstack с этой душой. У меня есть фрагмент A -> B -> C -> D -> E, когда я использую это решение, график только A -> E . Есть идеи?
- person AndroidRuntimeException; 06.12.2019
Невозможно начать действие, внутри моего фрагмента отображается исключение нулевого указателя
- person Abraham Mathew; 26.03.2020
Я использовал NavDeepLinkBuilder в своей службе и передал контекст службы, и это не сработало. Можете ли вы рассказать, как вы использовали NavDeepLinkBuilder в своей службе переднего плана.
- person Himanshu Malik; 04.11.2020
При нацеливании на новый Android S вы должны использовать
.createTaskStackBuilder() .getPendingIntent(0, FLAG_IMMUTABLE)
вместо .createPendingIntent()
, иначе ваше приложение выйдет из строя из-за новых ограничений Pending Intent.
- person Tim; 29.05.2021