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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了片段存储和重用:使用TabView的多个子片段相关的知识,希望对你有一定的参考价值。

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

  • 我的情景

我在3 Tabs中有one Activity(没有viewpager只是片段更改)和有2-4个子片段的标签,如下图所示。

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

这5个用backstack null工作得很好

fragmentTransaction.addToBackStack(null);

但是知道,

6)当我点击Tab 2它将始终显示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片段因为在qazxsw poi这个标签2我是qazxsw poi片段。

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

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

假设我在选项卡2 F1 - > F2 - > F3中 后按F3 - > F2(后退) - > F1(后退) - >关闭活动

last time

答案

您可以存储Opened F3并在更改选项卡时检索。

enter image description here

而推片段

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);

以上是关于片段存储和重用:使用TabView的多个子片段的主要内容,如果未能解决你的问题,请参考以下文章

Laravel:如何在控制器的几种方法中重用代码片段

条件片段和导航重用

具有相同布局的多个片段

如何为每个片段保存一个变量值以重用它? [关闭]

如何从片段到活动而不会干扰片段的可重用性

java 代码片段