簡體   English   中英

Android 導航:從后台刪除一個活動

[英]Android Navigation: removing an activity from the backStack

這個問題與 androidx.navigation 庫特別相關。

我將我的主圖表分成 2 個圖表,因為我想要一個底部導航,上面有片段,一個沒有。 而不是使用<include...我將活動添加到第一個圖表

    <activity
        android:id="@+id/Activity2"
        android:name="com...Activity2"
        android:label="Activity2" />

這一切都很好,但我在第一個圖中還有一個啟動屏幕,用於檢查用戶是否經過身份驗證並將它們直接導航到第二個圖中。 對於一個片段,我可以只使用標准的popTopopToInclusive來管理片段后台堆棧,但我無法弄清楚如何使用兩個活動來執行此操作,以便在啟動第二個活動時第一個活動被殺死並從后台堆棧中刪除因此用戶無法向后導航。

目前我只是在導航發生的片段中處理它

        navController
            .navigate(R.id.action_someFragment_to_anotherFragment)
        requireActivity().finish()

這可行,但它留下了出錯的空間,如果可能的話,我想用導航庫來處理它。

每個單獨的NavController完全相互獨立。 雖然<activity>目的地允許您使用navigate()到 go 到一個完全獨立的活動(可能會或可能不會使用 Navigation 本身),但 Navigation 本身永遠不會finish()作為navigate()調用的一部分的活動,因此您需要自己做。

根據導航導航談話推薦使用具有不同導航圖的多個活動來處理導航中的身份驗證,並且這種方法在許多方面都失敗了(例如深度鏈接和進程死亡/重新創建后的失效),這些都由處理登錄指南 當使用一個 NavController 和監聽導航事件的能力時,你不會遇到這些問題。

暫無
暫無

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

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