У меня есть fragment A
, который содержит этот код:
<RelativeLayout 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:layout_width="match_parent"
android:layout_height="match_parent">
.......
<androidx.fragment.app.FragmentContainerView
android:id="@+id/children_container"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:navGraph="@navigation/layout_navigation" />
.......
</RelativeLayout>
которые начинают мой fragment B
. Я хотел бы знать, как я могу передать какой-либо аргумент из fragmentA
и получить в моем fragmentB
.
Прочитав эту ссылку, но в ней говорилось о действии A из деятельности Б.
Я попытался удалить эту строку из моего FragmentContainerView.
app:navGraph="@navigation/layout_navigation"
И в моем fragmentA
я добавил следующую строку:
val bundle = Bundle().apply {
putString(KEY, "value")
}
NavHostFragment.create(R.navigation.layout_navigation, bundle)
В моем fragment B
мой arguments
равен нулю
Есть ли у вас какие-либо идеи?
NavHostFragment.create(R.navigation.layout_navigation, bundle)
Я вообще не понимаю эту строчку. Вы должны использоватьNavigation.findNavController(this).navigate(R.id.some_destination, bundle)
. - person EpicPandaForce   schedule 26.04.2020val fragment = childFragmentManager.findFragmentById(R.id.children_container) ?: return
val navController = NavHostFragment.findNavController(fragment)
Тогда это работает ... - person LikseN   schedule 27.04.2020