Navigation Architecture Component-将参数数据传递给带有片段的startDestination

问题描述 投票:0回答:1

我有一个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

通过阅读此link,但从活动B谈到了活动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为空

你有什么想法吗?

android android-architecture-components android-architecture-navigation
1个回答
0
投票

打开导航图xml文件,然后选择将接收一些数据的片段。屏幕右侧是片段属性。

enter image description here

选择“参数”选项,然后单击+。然后输入参数名称,数据类型等。

enter image description here

在对话框中输入数据时,单击“添加”。

现在打开您的“ fragmentA”并初始化navController

val navController = Navigation.findNavController(view)

并使用捆绑包中的数据导航到您的“ fragmentB”>

view.findViewById<Button>(R.id.openB).setOnClickListener { // <==== YOUR CLICK LISTENER THAT NAVIGATE TO FRAGMENT B
                navController.navigate(
                    R.id.action_fragmentA_to_fragmentB, // <==== YOUR ACTION ID
                    Bundle().apply {
                        putString("KEY", "My data") // <==== YOUR KEY AND DATA(data type should be similar to what you specified when create arguments in navigation graph XML file)
                    }
                )
            }

现在转到“ fragmentB” .java或.kt文件并接收数据

val data = arguments?.getString("KEY")

希望我的回答对您有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.