簡體   English   中英

如何避免后端堆棧中的多個片段實例?

[英]How to avoid multiple instances of a fragment in back stack?

我想避免在這個導航用例中:A - > B - > A - > B - > A - > B ...

所有片段實例都保存在后棧中。 原因:避免內存不足錯誤。

我嘗試創建一個自己的導航工作流程,如下所述: https//stackoverflow.com/questions/18041583/fragments-backstack-issue?noded = 1#comment26393904_18041583 (應該模仿活動行為,在啟動后始終調用finish()一個新的,同時只允許導航堆棧中的第一個(主頁)。 但它似乎是非常錯誤或不可理解的。

所以我也想,實現像活動“帶到前面”標志的行為。 但我不知道該怎么做。 也許是popBackStack的東西 - 但我不知道如果交易已經在后台,如何詢問片段。 而且我不知道我是否走在正確的道路上。

這應該是一個非常標准的任務,因為每個導航菜單基本上都有這個問題。 但是,似乎還沒有直接實施,也無法找到有關它的信息。

任何想法?

看一下FragmentManager backstack。 它具有在片段backstack中查看/彈出條目的功能。 您可能需要邏輯某些內容:如果用戶要求位於堆棧頂部的片段(前一個片段),則退出此片段(返回),否則啟動一個新片段。

這會產生:

A (user asks for B)
A->B (user asks for A again)
A

..但不會阻止

A (user asks for B)
A->B (user asks for C)
A->B->C (user asks for A)
A->B->C->A

這需要將堆棧從“C”倒回到“A”,你可以這樣做..但是如果是這樣的話,也許你應該在開始一個新片段之前無條件地彈出片段堆棧(IE No back stack at at所有..)

暫無
暫無

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

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