【问题标题】:TabHost with Activities vs. ActionBar with Fragments带有活动的 TabHost 与带有片段的 ActionBar
【发布时间】:2012-11-16 15:56:22
【问题描述】:

我发现了一些与此问题相关的讨论,但没有明确或确定的内容。

构建一个基于选项卡的应用程序,似乎不得不在 (A) 为每个屏幕使用带有活动的 TabHost 和 (B) 为每个屏幕使用带有片段的 ActionBar 之间做出选择。这提出了几个问题:

1) 这是真的吗,还是可以将 ActionBar 与不同的活动一起使用。

2) 如果困境是真实存在的,为什么事情会这样设置? Google 是否计划弃用 TabHost 和基于标签的导航的多活动方法?多活动方法有什么不好的地方吗?

3) 如果这两种方法都将继续得到支持,那么每种方法的优缺点是什么?如果我使用 ActionBar+Fragments,我会遇到任何问题吗?例如,当我希望我的一个选项卡式屏幕滑过/弹出另一个屏幕/片段时,我是否会在 ActionBar 中的选项卡之间切换有趣的行为?

【问题讨论】:

    标签: android android-fragments android-actionbar android-tabhost


    【解决方案1】:

    您还可以使用带有 Fragments 的 TabHost 的第三种选择。这使得您只有一个活动和多个片段作为孩子。

    http://developer.android.com/reference/android/support/v4/app/FragmentTabHost.html

    我使用这个类创建了一个简单的例子。

    https://github.com/marsucsb/nested-fragments

    【讨论】:

    • 对,这是第三种选择。它与 ActionBar+Fragments 相比有什么优势吗?出于一致性和其他原因,文档建议将 ActionBar 用于选项卡式导航,听起来 TabHost 可能会被弃用。只要我把整个应用分片做,有什么理由去 TabHost 吗?
    • 我认为这只是一个偏好问题,并且需要针对您的应用程序。我个人通常不使用 TabHost 而不是 ActionBar+Fragments+ViewPager 方法,因为我喜欢能够滑动浏览片段页面的效果。
    • 酷,谢谢!顺便说一句,我现在正在摆弄一个不同的解决方案:使用 ActionBar 选项卡,但通过为每个 Activity 构建相同的 ActionBar 来为每个选项卡使用单独的 Activity。在活动之间切换时抑制动画,它工作得非常好。感觉很老套,但在单个选项卡下向前/向后导航时,最终可能比所有片段更优雅(ViewPager 可能无法满足我的目的,需要更像 iPhone 的 UINavigationController 的东西)。看到这种方法即将到来的厄运吗?
    • 哇,这个设置有点难以想象。我认为你应该没问题,但我总是担心可维护性。您是否考虑过可能使用带有 ViewFlipper 的片段在视图和保持 viewflipper 状态的堆栈之间翻转。我一直在慢慢尝试不使用所有活动。由于片段很容易重复使用以及它们在支持平板电脑时所起的作用,因此片段似乎是要走的路。
    • ViewFlipper 是个好主意,但是导航分叉——我需要根据用户的选择翻转到不同的片段。
    【解决方案2】:

    我和你在一起。在 Fragments 出现之前,我就开始开发“Droid Bones”(一定要使用引号)。当我开始研究该架构时,它似乎无法满足我的结构要求。也就是说,我发现多活动方法非常流畅和灵活。我担心的是,一些 TabHost 文档最近似乎“消失了”!

    【讨论】:

    • 您能否详细说明片段方法的结构限制? “Droid Bones”需要哪些片段无法完成的任务? (此外,文档消失令人担忧!丢失了什么?)
    • 我主要担心的是我在 TabWidget 上方使用了几个微调器,但我找不到使用 ActionBar 构造的方法。另外,我担心我还在子 Activity 框架中使用了 TabWidget,而我看不到 ActionBar 的适应。
    • 至于缺少的文档,曾经有一个名为“HelloTabWidget”的示例项目。我在 SDK 示例目录中的任何地方都没有看到这个。
    • 显然,ActionBar 选项卡的主要问题是后退按钮逻辑,它表现不佳。似乎您必须创建一个自定义后退堆栈并自己处理后退按钮逻辑,以覆盖 onBackPressed()。弱酱,谷歌。
    • 关于回栈问题herehere有一些讨论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    相关资源
    最近更新 更多