gpt4 book ai didi

android - 在两个 fragment 之间传递一个参数,每个 fragment 都在不同的导航图中

转载 作者:行者123 更新时间:2023-11-29 02:23:25 26 4
gpt4 key购买 nike

使用 Android 导航组件。我有两个导航图(每个都有自己的流程),可以说是导航图 A 和 B。我成功地从 A 导航到 B,但我无法将图 A 中包含的最后一个 fragment 的参数传递给属于图 B 的起始 fragment 。

我能够在属于同一个图的 fragment 之间传递参数,但是在导航图之间导航时不会生成设置参数的函数。

我正在尝试使用 safeargs 来实现这一点。

这是导航图代码:

导航图A:

<navigation android:id="@+id/nav_graph_a"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
app:startDestination="@id/fragment1">

<fragment
android:id="@+id/fragment1"
android:name="com.mypackage.fragments.Fragment1"
android:label="Fragment1">
<action
android:id="@+id/action_fragment1_to_fragment2"
app:destination="@id/fragment2"/>

</fragment>

<fragment
android:id="@+id/fragment2"
android:name="com.mypackage.fragments.Fragment2"
android:label="Fragment2">
<argument
android:name="thisArgumentAlwaysArrive"
android:defaultValue="null"
app:argType="string"/>
<action
android:id="@+id/action_fragment2_to_nav_graph_b"
app:destination="@id/nav_graph_b"/>
</fragment>

<include app:graph="@navigation/nav_graph_b"/>

导航图B:

<navigation android:id="@+id/nav_graph_b"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
app:startDestination="@id/fragment3">

<fragment
android:id="@+id/fragment3"
android:name="com.mypackage.fragments.Fragment3"
android:label="Fragment3">

<argument
android:name="thisArgumentNeverArrive"
app:argType="string"/>
</fragment>

关于如何实现这个的任何想法?

最佳答案

documentation 中所述:

Note: Safe Args do not support cross-module navigation, as there is no direct action to the destination. In the previous example, although a Directions class would be generated for the target destination in settings, you aren't able to access the generated class from the classpath of the list module.

但是你可以像这样使用 bundle 而不是 nav_args:

来自

FristFragmentDirections.actionFirstFragmentToSecondFragment(your_parameter).let { action ->
findNavController().navigate(action)
}

FristFragmentDirections.actionFirstFragmentToSecondFragment().let { action ->
findNavController().navigate(
action.actionId,
Bundle().apply { putString("parameter_key", your_parameter) }
)
}

关于android - 在两个 fragment 之间传递一个参数,每个 fragment 都在不同的导航图中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53702510/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com