当我将相同的片段添加到第二个导航图时,无法识别操作 Class

When I add the same fragment to second navigation graph, don´t recognize the Action Class

我需要将相同的片段添加到不同的导航图中。这是第一张图的一段代码 (mobile_navigation)

<fragment
    android:id="@+id/nav_contactanos"
    android:name="com.engie.mexico.micuenta.Fragments.FragmentContactanosCliente"
    tools:layout="@layout/fragment_contactanos_cliente" >
    <action
        android:id="@+id/action_nav_contactanos_to_nav_aviso_privacidad"
        app:destination="@id/nav_aviso_privacidad" />
    <action
        android:id="@+id/action_nav_contactanos_to_nav_terminos_condiciones"
        app:destination="@id/nav_terminos_condiciones" />
    <action
        android:id="@+id/action_nav_contactanos_to_nav_mensaje_usuario"
        app:destination="@id/nav_mensaje_usuario" />
</fragment>

第二个导航图中的第二个代码片段(navigation_inicial)

    <fragment
    android:id="@+id/nav_contactanos_cliente"
    android:name="com.engie.mexico.micuenta.Fragments.FragmentContactanosCliente"
    tools:layout="@layout/fragment_contactanos_cliente" >
    <action
        android:id="@+id/action_nav_contactanos_cliente_to_nav_mensaje_usuario"
        app:destination="@id/nav_mensaje_usuario" />
    <action
        android:id="@+id/action_nav_contactanos_cliente_to_nav_terminos_condiciones"
        app:destination="@id/nav_terminos_condiciones" />
    <action
        android:id="@+id/action_nav_contactanos_cliente_to_nav_aviso_privacidad"
        app:destination="@id/nav_aviso_privacidad" />
</fragment>

当我尝试 MakeProject 时,构建输出显示错误:

C:\Android\MiCuenta\app\src\main\java\com\engie\mexico\micuenta\Fragments\FragmentContactanosCliente.java:478: error: cannot find symbol
            FragmentContactanosClienteDirections.ActionNavContactanosToNavMensajeUsuario action = symbol:   class ActionNavContactanosToNavMensajeUsuario

位置:classFragmentContactanosClienteDirections

但是当我注释第二段代码时(navigation_inicial),问题就消失了。 问题是我需要第二段代码,因为我需要回忆片段并与它共享捆绑包,与其他信息一起显示不同的东西...... 如何实现?

我也分享图的设计:

mobile_navigation

mobile_navigation.xml (design)

navigation_inicial

navigation_inicial.xml (design)

Directions class 的名称基于片段的名称,一次只能有一个特定 class 的实例。根据 this issue with Safe Args,当您从另一个图中的一个方向覆盖一个方向 class 时没有警告 - 最后一个获胜。这就是为什么在不同的图中重复使用相同的片段会使第一个图中的方向 class 无效。

当然,如果您的第二个图的片段有不同的操作、不同的参数或任何不同之处,它也应该有一个不同的片段 class - 如果您的单个片段 class 要使用另一个图中的参数或动作,它们会失败,因为它们不存在于该图中。

如该错误中所述:

For a destination with an android:name, you'd want to include that android:name in only one place in your graph, referencing that shared destination from all of the places that need access to it (as a destination can access any sibling destinations of their parent graph).