我在具有多个活动的android应用程序中使用导航库,我想知道是否有一种方法可以在多个导航图之间共享某些操作(使用预定义的参数打开某些页面)。 它是这样的:
现在,我想使用在 NavGraphA 和 NavGraphC 中都打开 ActivityB 的操作,最好不要复制活动,其参数和操作本身在两个图表中(例如某种包含?)。
我知道可以在两个图中将 ActivityB 定义为活动元素,但是随后我需要再次用相同的参数再次定义动作。
我将需要在两个图中执行以下操作:
<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复制它。
也许可以通过某种方式在多个图形之间包含共享的全局动作?
答案 0 :(得分:0)
您可以使用全局操作来创建多个目标可以使用的通用操作。
在NavGraphA或NavGraphC中添加ActivityB,然后在导航设计视图上右键单击->添加动作->全局,将其设置为全局。
因此,ActivityA和ActivityC都可以使用其ID导航到ActivityB:例如。 R.id.action_global_activityB
有关更多详细信息,请参见Global actions。