我在我的android應用程序中有一個處理多個視圖/片段替換的活動。此活動還具有導航抽屜以導航至頂級片段。從頂級片段中,您可以導航到詳細級片段。
通過從左側滑入導航抽屜,可始終訪問導航抽屜。如果當前片段是頂級片段,則導航 - 抽屜也可以通過操作欄訪問。如果當前片段是詳細級片段,則可以通過操作欄(或通過按下後退按鈕)導航回來。清除backstack並用頂級片段替換當前片段
可以說我有3個頂級碎片可以通過導航抽屜進行訪問。
fragment[1]
,fragment[2]
,fragment[3]
從fragment[1]
,你可以瀏覽到詳細級fragment[1.1]
。
現在用戶想要從當前的fragment[1.1]
直接導航到頂層fragment[3]
。用戶只需在導航抽屜中滑動並點擊fragment[3]
的項目。
現在,如果用戶點擊後退按鈕,應用程序應該關閉(因爲它導航到頂級片段)。所以每次用戶導航到頂層片段時,都應該清除後臺堆棧。要檢查是否應顯示抽屜指示器,我正在讀取getBackStackEntryCount() - 值並將其與0進行比較。
作爲總結。我想從細節層次的片段導航到任何頂層片段並清除後臺堆棧。
問題:
當我通過執行
getSupportFragmentManager().popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
,
片段交易清除返回堆棧反向重播(例如通過fragment[1.1]
更換fragment[1]
)。我不希望他們被重播。我在onCreateView,onViewCreated,onStart等方面進行了大量的初始化操作,並且還啓動了獲取數據的任務。我想跳過這一切。只需用一個尚不在背後的新頂級層次替換細節層次視圖即可。
我找不到任何解決方案來清除沒有彈出交易的後臺堆棧。
有沒有一個乾淨的解決方案來處理這個問題?我是否必須實現自己的後臺行爲?
編輯: YouTube應用程序也表現得如此。當您從細節導航到頂層時,後臺將被清除。但是他們如何清除backstack而不重放fragment-transactions?
感謝您的回答。