【问题标题】:In android how do I create different fragments/activities stacks within each tab that persist across tab changes?在android中,如何在每个选项卡中创建不同的片段/活动堆栈,这些片段/活动堆栈在选项卡更改中持续存在?
【发布时间】:2013-04-04 20:50:18
【问题描述】:
 TAB1          TAB2      TAB3
   |            |          |
 FragmentA     FragmentC  FragmentE
   |             |         |
FragmentB     FragmentD  FragmentF

我希望我的用户界面布局如上所示。我已经阅读了有关片段如何工作的信息,看起来我应该能够实现一个用户界面,该界面允许我在选项卡之间切换,这样每个选项卡都有一个片段,并且在片段上选择某些内容将导致显示另一个片段。

现在的问题是:我看不出如何在每个选项卡中维护不同的片段堆栈。我想要的是能够在使用 Tab2 中的后退按钮时从 fragmentD 转到 FragmentC。切换到 Tab1 应该会显示 FragmentB 并允许我使用 BACK 按钮导航到 FragmentA。 有没有办法像我描述的那样拥有多个片段堆栈?

【问题讨论】:

  • API 现在支持 getChildFragmentManager(),它允许片段拥有子片段。

标签: android android-fragments


【解决方案1】:

模式应该是这样的:

   TAB1          TAB2         TAB3
    |             |            |
 Activity 1    Activity 2  Activity 3
    |             |            |
 FragmentA     FragmentC   FragmentE
    |             |            |
 FragmentB     FragmentD   FragmentF

您无法(据我所知)使用当前 API 尝试做的事情。更多详情请关注here

【讨论】:

  • 我确实有一个活动 (MainActivity),它有一个带有选项卡的 ActionBar。
【解决方案2】:
【解决方案3】:

在您的 SDK 中,您有 de APIdemos 示例...在那里您会找到示例代码...,将其导入到项目中。从现有源创建新的并转到 /androisdkdirectory/samples/android-x/Apidemos 然后完成

你会发现一个 Java 文件和不同选项卡类型的视图,这对于学习可以使用的新视图非常有用

【讨论】:

    【解决方案4】:

    我的猜测是,如果您只是避免使用 backstack 并通过标签引用您的片段,这是可能的。例如,如果你给 fragmentC 一个标签“fragmentC”,那么如果 fragmentD 是可见的,你可以创建一个 FragmentTransaction 用 fragmentC 替换 fragmentD。当您的转换与您在此处的布局一样定义时,后退堆栈似乎更有价值。

    【讨论】:

    • 我最终在我的设计中做出了妥协,点击不同的标签会导致当前标签完全展开。
    【解决方案5】:

    你为什么不打电话:

    fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
    

    无论何时点击标签?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多