条件片段和导航重用

yar*_*lav 5 android android-fragments android-navigation android-architecture-components android-architecture-navigation

给定 N 个片段,代表同一实体的不同 UI。片段有条件地显示。该条件仅在运行时已知。每个片段应该有相同的导航流。

如何使用导航架构组件 XML 图从片段中概括/抽象导航流以进一步重用?目前,我只看到为每个片段创建单独的目的地或嵌套导航的方式,但就重用而言,这是一个糟糕的想法。另一种选择是在 Kotlin/Java 代码中进行所有条件转换,但在这种情况下,应用程序的流程将不会在导航图架构中描述。有没有更好的方法来重用导航?

关于这个主题的官方文档非常空洞:https : //developer.android.com/topic/libraries/architecture/navigation/navigation-conditional

Ada*_*itz 0

片段可以与导航架构组件一起重复使用,以保持代码高效。

例如,我的HomeFragment中有一个名为ContentFragment的嵌套子 Fragment ,其中包含内容。我正在重新使用 ContentFragment显示在单独屏幕上启动的不同类型的内容。

  1. 在 NavGraph 设计工具中选择“新目的地”以添加片段。 在此输入图像描述

  2. 将参数传递到嵌套的 Fragment 和使用 NavGraph 启动的 Fragment 中,以便 Fragment 可以读取该参数并为每种情况提供适当的逻辑。

a) 对于嵌套的片段,我通过捆绑传递一个参数,就像在前导航组件时代使用片段一样。

b) 对于新屏幕,我选择添加到 NavGraph 的片段,然后单击参数部分中的+按钮。然后,您可以按照文档使用导航组件添加参数。 在此输入图像描述