У меня есть 2 действия узла навигации - Activity A и Activity B с каждым собственным набором навигационных графиков. Я хочу перейти от FragmentA, который находится в навигационном графе, размещенном в Activity A, к FragmentB, который находится в навигационном графе, размещенном в Activity B, для выполнения sh, который я пробовал явную глубокую ссылку. Однако независимо от того, как я не могу получить аргумент в FragmentB, это всегда значение по умолчанию. Я использую безопасные аргументы. Что я делаю не так?
update: похоже, проблема начинается с недоступного графа навигации. Присмотревшись к журналу, я понял, что NavController зарегистрировал следующее сообщение:
Не удалось найти пункт назначения com.myapp.app:id/nav_graph_b в навигационном графе, игнорируя глубокую ссылку из Intent. ...
навигационный граф размещается на хосте B, который установлен в setComponentName. Почему тогда график недоступен?
deeplink
val bundle = Bundle()
bundle.putInt("theIntKey", theInt)
val pendingIntent = NavDeepLinkBuilder(requireContext())
.setComponentName(NavHostActivityB::class.java)
.setGraph(R.navigation.nav_graph_b)
.setDestination(R.id.fragmentB)
.setArguments(bundle)
.createPendingIntent()
.send()
navgraph
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/nav_graph_b"
app:startDestination="@id/fragmentC"
tools:ignore="UnusedNavigation">
<fragment
android:id="@+id/fragmentB"
android:name="FragmentB">
<argument
android:name="theIntKey"
app:argType="integer"
android:defaultValue="0" />
</fragment>
<!-- other fragments-->
</navigation>
внутри FragmentB
//all of these three methods return always the default value
val theIntFromBundle = requireArguments().getInt("theIntKey")
private val args: FragmentBArgs by navArgs()
requireActivity().intent.extras?.let {
val args = FragmentBArgs.fromBundle(it)
}