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

时间:2017-12-27 13:12:57

标签: android android-fragments tabs fragment

您好我被困在多个片段存储和重用。

  • 我的schenario

我在<div class="title" :style="{ fontSize: (object.text.length > 8 ? '0.7' : '1') + 'em !important' }"> {{object.text}} </div> 中有3 Tabs(没有viewpager只是片段更改),而且有2-4个子片段的标签如下图所示。

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

这5个与backstack null

一起工作得很好
one Activity

但知道,

6)当我点击Tab2时它将始终显示F1片段。因为我管理下面的片段活动。

fragmentTransaction.addToBackStack(null);
  • 我需要什么。

6)我需要,假设我点击 Tab2 它显示 F3 片段,因为此标签中的 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; } 我是last time片段。

那么如何处理Store tab明智的Fragment Backstrack。

是的还需要像下面的步骤(OnBackpress)

支持我在标签2 F1 - &gt; F2 - &gt; F3
之后按F3 - &gt; F2(背压) - &gt; F1(背压) - &gt;关闭活动

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以存储 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();

虽然是pop片段

play-services:11.6.2 and firebase:11.6.1

对于工作演示 - Github