将参数传递给嵌套的导航架构组件图 [英] Passing argument(s) to a nested Navigation architecture component graph

查看:33
本文介绍了将参数传递给嵌套的导航架构组件图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何将参数传递给嵌套的导航架构组件图?

How does one pass argument(s) to a nested Navigation architecture component graph?

假设我构建了我的导航图以从 FragmentA -->嵌套,其中Nested 包含FragmentB -->片段C...

Let's say I construct my navigation graph to navigate from FragmentA --> Nested, where Nested contains FragmentB --> FragmentC...

如果这是一个纯 FragmentA -->FragmentB... 图,我只需使用 FragmentADirections.actionFragmentAToFragmentB(argument = foo) 设置导航.但是一旦你转动 B -->C 变成 Nested...

If this was a pure FragmentA --> FragmentB... graph, I would just set up the navigation with FragmentADirections.actionFragmentAToFragmentB(argument = foo). But that action takes zero arguments as soon as you turn B --> C into Nested...

那我该怎么办?

推荐答案

全局操作可能是一种方法,但是当我将嵌套图形提取到它自己的 .xml.但结果证明它很简单 - 只需在代码中手动添加参数到您的操作中即可.

Global actions might be a way but I didn't get that working as I wanted once I extracted the nested graph to its own .xml. But it turned out to be embarrassing simple - just add the arguments manually in code, to your action.

与问题相关的一个例子是:

An example related to the question would be:

将嵌套图保存到nested_graph.xml,它看起来像

Save the nested graph to nested_graph.xml, it will look something like

<navigation
    android:id="@+id/nested_graph"
    app:startDestination="@id/fragmentB"
    ...>

    <fragment 
        android:id="@+id/fragmentB"
        ...>
        <argument
            android:name="foo"
            app:argType="integer"/>
        <action 
            ... // navigation action to FragmentC />
    </fragment>

    <fragment ...  // FragmentC stuff
</navigation>

要将参数从不同的图形传递给 nested_graph.xml,请说 root_graph.xml do

To pass arguments to nested_graph.xml from a different graph, say root_graph.xml do

<navigation
    android:id="@+id/root_graph"
    app:startDestination="@id/fragmentA"
    ...>

    <fragment 
        android:id="@+id/fragmentA"
        ... >
        <action
            android:id="@+id/action_fragmentA_to_nested_graph"
            app:destination="@id/nested_graph">
            <argument
                android:name="foo"
                app:argType="integer"/>
        </action>
    </fragment>
    <include app:graph="@navigation/nested_graph"/>
</navigation>

换句话说,只需将您期望在 nested_graph<中接收到的 添加到 root_graph 操作中/代码>.

In other words, just add the same <argument ... /> to the root_graph action as you expect to receive in the nested_graph.

这篇关于将参数传递给嵌套的导航架构组件图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆