2017-12-27 340 views
1

你好,我被困在多個片段存儲和重用。片段存儲和重用:使用TabView的多個子片段

  • 我schenario

我有3 Tabs(不只是viewpager片段變化)one Activity和選項卡具有下圖像所示2-4兒童片段作爲等。

所以,當我打開活動。
1)Tab1加載並顯示F1片段。
2)點擊表2並顯示F1片段。
3)點擊F1中的按鈕並移動到Tab2的F2片段
4)再次重複點擊F2按鈕並移動到Tab2的F3片段。
5)現在我點擊Tab3並打開F1片段。

這5個偉大的堆棧中

fragmentTransaction.addToBackStack(null); 

但要知道,

6)當我點擊TAB2它會顯示F1片段始終。因爲我管理下面的代碼片段。

switch (selected) { 
     case 0: 
      showFragment(TAB1.newInstance("", ""), TAG_HOME); 
      break; 
     case 1: 
      showFragment(TAB2.newInstance("", ""), TAG_FAV); 
      break; 
     case 2: 
      showFragment(TAB3.newInstance("", ""), TAG_ADD); 
      break; 
} 
  • 我需要什麼。

6)我需要像,假設我在TAB2挖掘它顯示F3片段在此TAB2 becase的在last timeOpened F3片段。

那麼如何處理商店標籤明智片段Backstrack。

而且是還需要像下面的步驟(OnBackpress)

suppouse我在片2 F1 - > F2 - > F3
回按F3後 - > F2(backpress) - > F1(backpress) - >關閉活動

enter image description here

回答

1

您可以存儲Stack of fragment in Hashmap當您更改選項卡取回。

HashMap<String, Stack<Fragment>> mStacks = new HashMap<String, Stack<Fragment>>(); 
mStacks.put(AppConstants.TAB_A, new Stack<Fragment>()); 
mStacks.put(AppConstants.TAB_B, new Stack<Fragment>()); 
mStacks.put(AppConstants.TAB_C, new Stack<Fragment>()); 

雖然推片段

mStacks.get(tag).push(fragment); 

雖然流行片段

mStacks.get(mCurrentTab).pop(); 

對於工作演示 - Github

+0

OMG ..巨大的感謝救我的時間。值得Upvote。 –