簡體   English   中英

如何使它在片段化后無法再使用“后退”按鈕導航到最后一個片段?

[英]How to make it so that after naving to a fragment, the last fragment can no longer be navigated to with the back button?

我有這樣的導航結構:

StaringFragment -> nestedNavGraph
                         |
                   HomeFragment -> SecondFragment

我需nestedNavGraph ,以便在用戶從StartingFragment導航到nestedNavGraph ,用戶不再可以單擊“后退”按鈕以返回到StartingFragment

我基本上是在執行權限檢查,如果檢查成功,則使用以下代碼從StartingFragment導航到nestedNavGraph

findNavController(R.id.nav_host_frag).navigate(R.id.nestedNavGraph)

然后,在之間的操作箭頭StartingFrag -> nestedNavGraph在導航圖形編輯器,我設置popUpToHomeFragment和包容性,以true 我是否誤解了文檔?

一旦我離開它,從后堆棧中刪除StartingFragment的正確方法是什么?

根據文檔 ,您將app:popUpTo設置為要彈出的目標-您不想彈出HomeFragment,而是要彈出StartingFragment,因此應將app:popUpTo設置為StartingFragment的ID。

請注意,根據導航原則 ,您應該始終有一個固定的起始目標-不應將起始目標用於條件導航 - 導航中的許多API(例如NavigationUI)都假定您正確遵循了該原則導航,並且圖形的起始目標保留在后堆棧中。

請記住,Android將在返回到活動時(例如,在用戶手動撤消您要求的權限后)恢復您的狀態(包括您當時所在的片段)-片段本身(或活動,如果權限確實是全局的整個應用中每個屏幕上的必需)都應該一直在檢查權限-您不能依賴始終被調用的StartingFragment。

我沒有使用過導航LIB呢,但是從閱讀的文檔中此位 ,也許你只是有一個錯字,並需要更換popTopopUpTo

要在從一個目的地導航到另一個目的地時彈出目的地,請向關聯的元素添加一個app:popUpTo屬性。 app:popUpTo告訴導航庫在對navigation()的調用中將某些目標從堆棧中彈出。 該屬性值是應保留在堆棧上的最新目的地的ID。

您還可以包括app:popUpToInclusive =“ true”,以指示在app:popUpTo中指定的目標也應從后堆棧中刪除。

暫無
暫無

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

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