如何将不同的参数传递给片段 [导航] Android

Posted

技术标签:

【中文标题】如何将不同的参数传递给片段 [导航] Android【英文标题】:How pass different args to fragment [navigation] Android 【发布时间】:2021-12-29 03:28:52 【问题描述】:

我有 4 个片段,A,B,C,D FROM A,B,C 我可以导航到 D 片段,我想从每个片段中传递不同的参数,例如,

A.Direction.actionNavigation.D(int,String)
B.Direction.actionNavigation.D(float,Bool)
C.Direction.actionNavigation.D(double,String) and etc..

我可以在 D 片段参数中设置所有六个参数,但在这种情况下,我应该在每个方向上传递所有六个变量。那么有没有其他方法可以直接传递我想要在特定方向上的参数,然后在 D 片段中检索它

【问题讨论】:

【参考方案1】:

假设您是 Navigation Component ,您需要将 D Fragment 要求的所有参数设置为可为空。这样,您可以仅将特定 arg 从您需要的特定片段转发到 D 片段。 为此,您需要更改有关导航组件的 xml 文件,通常称为 nav_graph.xml。

<argument
            android:name="fromAtoD"
            app:argType="string"
            app:nullable="true"/>

需要进行上述更改才能满足您的需求。您需要进行空检查以避免代码崩溃


另一种方法是使用 Intent 并在 Intent 中传递捆绑包,不建议这样做,也不安全。

【讨论】:

以上是关于如何将不同的参数传递给片段 [导航] Android的主要内容,如果未能解决你的问题,请参考以下文章

导航架构组件 - 将参数数据传递给startDestination

如何将参数传递给导航控制器内的弹出视图控制器

将参数传递给 XML 布局中定义的片段

如何将百万美元html中的多个参数传递给百里香方言处理器

角 |导航时将参数传递给多个组件

如何将库类或对象传递给片段?