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

问题描述

我需要将相同的片段添加到不同的导航图。这是第一张图的代码 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

位置:FragmentContactanosClienteDirections类

但是当我注释第二段代码 navigation_inicial )时,问题消失了。 关键是我需要第二段代码,因为我需要调用片段并与它捆绑在一起,与其他信息一起共享,并展示不同的东西... 如何做到这一点?

我也分享了图形的设计:

mobile_navigation

mobile_navigation.xml (design)

navigation_inicial

navigation_inicial.xml (design)

解决方法

Directions类的名称基于Fragment的名称,并且一次只能有一个特定类的实例。根据{{​​3}},当您从另一张图中的一个方向类中覆盖一个“方向”类时,不会发出警告-最后一个获胜。这就是为什么在另一个图中重复使用相同片段会使第一个图中的Directions类无效的原因。

当然,如果第二张图的片段具有不同的动作,不同的参数或与此有关的任何东西,那么它也应该具有不同的片段类-如果您的单个片段类将使用另一个图的参数或动作,它们将失败,因为它们将不存在于该图中。

如该错误中所述:

对于具有android:name的目标,您只希望在图形中的一个位置包含该android:name,并从所有需要访问该目标的位置引用该共享目标(因为目标可以访问其父图的所有同级目标)。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...