gpt4 book ai didi

android - fragment 存储和重用 : Multiple Child fragments with TabView

转载 作者:行者123 更新时间:2023-11-30 00:12:05 24 4
gpt4 key购买 nike

你好,我被多个 fragment 存储和重用困住了。

  • 我的方案

我在 一个 Activity 中有 3 个选项卡(没有 viewpager 只是 fragment 更改),选项卡有 2-4 个子 fragment ,如下图所示。

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

这 5 个与 backstack null 配合得很好

fragmentTransaction.addToBackStack(null);

但要知道,

6) 当我点击 Tab2 时,它将始终显示 F1 fragment 。因为我在下面的代码 fragment 中管理 Activity 。

 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 Fragment becase 因为 last time 在这个 tab2 我是 打开 F3 fragment 。

那么如何处理 Store tab wise Fragment Backstrack。

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

假设我在选项卡 2 F1 ->F2 ->F3
返回后按 F3 -> F2(backpress) -> F1(backpress) -> 关闭 Activity

enter image description here

最佳答案

您可以在 Hashmap 中存储 Stack of fragment 并在更改 tab 时检索。

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

同时推送 fragment

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

同时弹出 fragment

 mStacks.get(mCurrentTab).pop();

用于工作演示 - Github

关于android - fragment 存储和重用 : Multiple Child fragments with TabView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47992840/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com