Мне пришлось взломать мой путь через ту же проблему. Чтобы решить эту проблему, первое, что вам нужно сделать, это создать действие для перехода к действию, как вы уже сделали.
Например:
<action
android:id="@+id/action_frag_to_myActivity"
app:destination="@id/myActivity"
app:popUpTo="@id/myActivity" />
Теперь вы можете передавать аргументы в Activity как преднамеренные дополнения, так что вы можете воспользоваться этим, чтобы целевое Activity выполняло «грязную работу» и очистить задний стек для вас.
Скажем, что у вас есть этот тег Activity внутри навигационного графика:
<activity
android:id="@+id/myActivity"
android:name="com.dummy.MyActivity"
android:label="activity_my" />
Вы можете добавить в него аргумент и добавить значение по умолчанию. Например:
<activity
android:id="@+id/myActivity"
android:name="com.dummy.MyActivity"
android:label="activity_my">
<argument
android:name="clearBackstack"
app:argType="boolean"
android:defaultValue="true" />
</activity>
Затем, когда вы вызовете findNavController().navigate(R.id.myActivity)
, он передаст дополнительное намерение с ключом "clearBackstack"
, которое вы можете прочитать внутри метода Activity onCreate()
. Нечто подобное примеру ниже Деятельность. Вы также можете изменить значение после перехода к нему. Подробнее об этом можно прочитать здесь, в документации .