Android 片段存储和重用:使用TabView的多个子片段

Android 片段存储和重用:使用TabView的多个子片段,android,android-fragments,tabs,fragment,Android,Android Fragments,Tabs,Fragment,你好,我被多重碎片存储和重用所困扰 我的schenario 我在一个活动中有3个选项卡(没有viewpager只是片段更改),选项卡有2-4个子片段,如下图所示 所以,当我打开活动时。 1) Tab1加载并显示F1片段。 2) 点击选项卡2并显示F1片段。 3) 点击F1中的按钮并移动到选项卡2的F2片段 4) 再次点击F2处的按钮,并移动到Tab2的F3片段。 5) 现在我点击Tab3并打开F1片段 这5个选项在backbackbacknull fragmentTransaction.ad

你好,我被多重碎片存储和重用所困扰

  • 我的schenario
我在
一个活动中有
3个选项卡
(没有viewpager只是片段更改),选项卡有2-4个子片段,如下图所示

所以,当我打开活动时。
1) Tab1加载并显示F1片段。
2) 点击选项卡2并显示F1片段。
3) 点击F1中的按钮并移动到选项卡2的F2片段
4) 再次点击F2处的按钮,并移动到Tab2的F3片段。
5) 现在我点击Tab3并打开F1片段

这5个选项在backbackbacknull

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中我是
打开的F3
片段

那么,如何处理存储选项卡式片段Backstrack

是的,也需要像下面的步骤一样(上下压)

支持我在表2 F1->F2->F3中
后按F3->F2(后按)->F1(后按)->关闭活动


您可以将
片段堆栈存储在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(mCurrentTab).pop();
工作演示-

 mStacks.get(mCurrentTab).pop();