2013-08-25 47 views
0

我需要在我的後臺中從片段到片段四處移動。如果我使用popbackstack,它會刪除頂部堆棧碎片,我也是。如果我需要回到棧上更高的碎片,我不能因爲它被刪除。我怎樣才能保留這些上層的後臺碎片,這樣我就不會丟失碎片中的數據? getBackStackEntryAt()是否允許我跳過堆棧而不廢棄上層的backstack項目,或者我在popBackStack(i-1,0)之後是否需要執行commit()?如何避免使用popBackStack破壞後臺條目?

很多謝謝

回答

0

這正是背堆棧應該如何工作。線索位於名稱的「堆疊」部分。這是一個LIFO(後進先出)結構,而不是隨機訪問。如果您想隨機跳轉條目,請不要使用後退堆棧來做到這一點。在每個跳轉的背堆棧上創建一個新條目,或使用操作欄選項卡或類似條目。如果你描述不同片段之間的關係,我們可能會建議如何在它們之間實現最佳導航;否則,您應該按照the official guidelines

+0

片段共享的唯一通用線程是它們都寫入相同的XML文件(DOM)。用戶在frag1中進行數據輸入,然後用戶在不同的片段中輸入不同記錄類型的數據。有時用戶必須在不同的碎片之間來回切換才能進行數據輸入。 – user1678837

+0

如何在不寫入堆棧的情況下將數據保存在碎片中?是否有另一種方法來保存碎片狀態? – user1678837

+0

對不起,如果我不清楚。你應該每個'FragmentTransaction'都有'addToBackStack':我的觀點是,如果你跳到另一個不是用戶最後看不到的片段,你*不應該嘗試使用'popBackStack'來實現這個。如果用戶必須來回切換,這聽起來像您在不同屏幕上的信息應該在一個屏幕上。 –