Я использую библиотеку навигации в своем приложении для Android с несколькими действиями, и я хотел бы знать, есть ли способ поделиться некоторыми действиями (которые открывают определенную страницу с предопределенными аргументами) между несколькими захватами навигации. Это выглядит так:
- Существует ActivityB, которому требуются аргументы a, b, c в его действии навигации.
- ActivityA имеет NavGraphA, который открывает ActivityB.
- ActivityC имеет NavGraphC, который также открывает ActivityB.
Теперь я хотел бы использовать действие, которое открывает ActivityB как в NavGraphA, так и в NavGraphC, желательно без дублирования действия, его аргументов и самого действия в обоих графики (например, какие-то включения?).
Я знаю, что можно определить 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>
Как видите, я могу либо объединить эти аргументы в один класс, что уменьшит количество аргументов, но исходная проблема все равно останется.
Или я могу просто продублировать его с разными идентификаторами.
Может быть, есть способ как-то включить общие глобальные действия в несколько графов?