簡體   English   中英

為全局操作彈出圖形 startDestination 片段 - Android 導航組件

[英]pop up to graph startDestination fragment for a global action - Android navigation components

我有一個多圖導航應用程序,我想使用根main_graph.xml定義的global action在圖之間切換

<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/main_graph"
        app:startDestination="@id/loadingFragment">

    <include app:graph="@navigation/learn_graph" />

    <action
            android:id="@+id/action_global_learn_graph"
            app:destination="@id/learn_graph"
            app:launchSingleTop="true"
            />
</navigation>

由於我正在嘗試在圖形之間切換,因此在將全局操作導航到目標圖形 (explore_graph) 時,我想從源圖形 (main_graph) 加載的片段中清除返回堆棧。 預期的行為是導航到目標圖的startDestination片段,僅在后台堆棧中保留該片段。 對於正常操作(同一圖中的操作),我可以使用popUpTo標志,如何為全局操作獲得相同的行為?

經過多次嘗試,我找到了解決方案。 基本思想是將 backstack 彈出到“擁有”全局動作的圖形。 在我的情況下main_graph是所有者,所以我做了:

<navigation xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/main_graph"
        app:startDestination="@id/loadingFragment">

    <include app:graph="@navigation/learn_graph" />

    <action
            android:id="@+id/action_global_learn_graph"
            app:destination="@id/learn_graph"
            app:popUpTo="@+id/main_graph"
            app:launchSingleTop="true" />

</navigation>

此外,您必須將app:launchSingleTop標志設置為true以使目標圖的實例在您的后台堆棧中唯一

您還可以包含app:popUpToInclusive="true"以指示app:popUpTo指定的目標也應從返回堆棧中刪除

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM