Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在多个导航图之间共享常见操作(或活动)?_Android_Navigation_Android Jetpack Navigation - Fatal编程技术网

Android 如何在多个导航图之间共享常见操作(或活动)?

Android 如何在多个导航图之间共享常见操作(或活动)?,android,navigation,android-jetpack-navigation,Android,Navigation,Android Jetpack Navigation,我将android应用程序中的导航库用于多个活动,我想知道是否有一种方法可以在多个导航图之间共享某些操作(使用预定义参数打开特定页面)。 事情是这样的: 存在需要在其导航操作中使用参数a、b、c的ActivityB ActivityA具有打开ActivityB的NavGraphA ActivityC具有NavGraphC,它也会打开ActivityB 现在我想使用在NavGraphA和NavGraphC中打开ActivityB的操作,最好不要在两个图中重复活动、其参数和操作本身(例如,某种包含?

我将android应用程序中的导航库用于多个活动,我想知道是否有一种方法可以在多个导航图之间共享某些操作(使用预定义参数打开特定页面)。 事情是这样的:

  • 存在需要在其导航操作中使用参数a、b、c的ActivityB
  • ActivityA具有打开ActivityB的NavGraphA
  • ActivityC具有NavGraphC,它也会打开ActivityB
  • 现在我想使用在NavGraphA和NavGraphC中打开ActivityB的操作,最好不要在两个图中重复活动、其参数和操作本身(例如,某种包含?)

    我知道在两个图中都可以将ActivityB定义为activity元素,但是我需要再次使用相同的参数定义action

    我需要在两个图中执行类似的操作:

        <fragment
                android:id="@+id/xyFragment"
                android:name="x.y.fragment"
                android:label="xyFragment" >
            <action
                    android:id="@+id/action_xyFragment_to_ActivityB"
                    app:destination="@id/activityB" />
        </fragment>
        <activity
                android:id="@+id/activityB"
                android:name="x.y.ActivityB"
                android:label="ActivityB" >
            <argument
                    android:name="a"
                    app:argType="argument.A" />
            <argument
                    android:name="b"
                    app:argType="argument.B" />
            <argument
                    android:name="c"
                    app:argType="argument.C" />
        </activity>
    
    
    
    正如您所看到的,我可以将这些参数封装到一个类中,这将减少参数的数量,但原始问题仍然存在

    或者我可以用不同的ID复制它


    也许有一种方法可以在多个图形中包含共享的全局操作?

    您可以使用全局操作来创建多个目标可以使用的公共操作

    在NavGraphA或NavGraphC中添加ActivityB,然后在导航设计视图上右键单击->添加操作->全局,将其设置为全局

    因此ActivityA和ActivityC都可以通过使用it id导航到ActivityB:例如R.id.action\u global\u ActivityB

    有关更多详细信息,请参阅