[英]Navigation from MainActivity to another fragment to login Activity back to last navigated fragment
[英]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
在導航圖形編輯器,我設置popUpTo
到HomeFragment
和包容性,以true
。 我是否誤解了文檔?
一旦我離開它,從后堆棧中刪除StartingFragment
的正確方法是什么?
根據文檔 ,您將app:popUpTo
設置為要彈出的目標-您不想彈出HomeFragment,而是要彈出StartingFragment,因此應將app:popUpTo
設置為StartingFragment的ID。
請注意,根據導航原則 ,您應該始終有一個固定的起始目標-不應將起始目標用於條件導航 - 導航中的許多API(例如NavigationUI)都假定您正確遵循了該原則導航,並且圖形的起始目標保留在后堆棧中。
請記住,Android將在返回到活動時(例如,在用戶手動撤消您要求的權限后)恢復您的狀態(包括您當時所在的片段)-片段本身(或活動,如果權限確實是全局的整個應用中每個屏幕上的必需)都應該一直在檢查權限-您不能依賴始終被調用的StartingFragment。
我沒有使用過導航LIB呢,但是從閱讀的文檔中此位 ,也許你只是有一個錯字,並需要更換popTo
與popUpTo
?
要在從一個目的地導航到另一個目的地時彈出目的地,請向關聯的元素添加一個app:popUpTo屬性。 app:popUpTo告訴導航庫在對navigation()的調用中將某些目標從堆棧中彈出。 該屬性值是應保留在堆棧上的最新目的地的ID。
您還可以包括app:popUpToInclusive =“ true”,以指示在app:popUpTo中指定的目標也應從后堆棧中刪除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.