【问题标题】:Android FragmentTransaction, ActionBar Tabs, and Multiple FragmentsAndroid FragmentTransaction、ActionBar 选项卡和多个 Fragment
【发布时间】:2011-07-06 21:37:30
【问题描述】:

所以,我正在使用兼容性库构建一个平板电脑应用程序,但遇到了一个我似乎无法弄清楚的奇怪问题。在一项活动中,我有 2 个选项卡(选项卡 A 和选项卡 B)和 3 个片段(片段 A1、A2 和 B)。 Tab A 关联的 ActionBar.TabListener 处理 Fragment A1 和 A2 的添加和删除,Tab B 关联的 ActionBar.TabListener 处理 Tab B 的添加和删除。到目前为止一切顺利。

当我启动活动时出现了奇怪的行为(因此选择了选项卡 A,并且正确地从左到右显示了片段 A1 和 A2)单击选项卡 B(因此删除了片段 A1 和 A2 并显示了片段 B ,仍然正确),然后单击选项卡 A! 现在,片段 A1 和 A2 正在显示,但顺序相反:A2 和 A1!

有没有人经历过这种奇怪的事情?如果我选择 Tab B,然后再次选择 Tab A,它们会再次反转以保持正确的顺序,然后循环继续。根据this article,“如果您将多个片段添加到同一个容器,那么您添加它们的顺序决定了它们在视图层次结构中出现的顺序”,奇怪的是现在情况并非如此它。

有什么想法吗?提前致谢!

【问题讨论】:

    标签: android android-fragments


    【解决方案1】:

    根据这篇文章,“如果您将多个片段添加到同一个容器,那么您添加它们的顺序决定了它们在视图层次结构中出现的顺序”,奇怪的是似乎并非如此现在可以了。

    就我个人而言,我不会指望这一点。

    例如,假设您使用的是水平的LinearLayout。您当前的代码大概是将两个片段都放在LinearLayout 中。我处理它的方法是在LinearLayout 中已有两个FrameLayouts,并将每个片段放入FrameLayouts 之一。

    【讨论】:

    • 嗯,这是个好主意!然后当您只想显示一个 Fragment 时,只需隐藏(将权重设置为 0)第二个 FrameLayout!我将不得不尽快尝试这个(我现在正在另一个项目中)。知道为什么您认为我们不能依靠文档中的内容吗?仅仅是因为存在错误,还是您认为 FragmentTransactions 的工作方式实际上符合逻辑?
    • @Shep Shapard:“你知道为什么你认为我们不能相信文档所说的内容吗?” - 因为我看到的示例代码不依赖于引用的语句。除此之外,这只是一种直觉。
    • 是的...在“尖端”上工作会很烦人,因为您要左右处理无证的怪事。顺便说一句,您的解决方案奏效了!谢谢!
    • 有人能告诉我如何将多个片段添加到作为片段本身的 ActionBar 选项卡中吗? (带有片段 A1 和 A2 的标签 A 片段)我认为不允许嵌套...?
    • @and-dev: 不支持片段嵌套。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多