2012-09-02 25 views
0

我正在为手机和平板电脑编写应用程序。与联系人应用程序一样,有多个选项卡(在我的情况下为2)。对于手机用户界面,它们由ViewPager管理,每个选项卡都有一个片段。联系人应用如何处理平板电脑上的标签?

但是对于平板电脑用户界面,每个选项卡都是一个活动,而不是片段。他们必须是,因为你不能把碎片放在碎片中。 (对吧?)

我意识到我可以在标签监听器上调用setContentView(),但是不会在每次更改时都销毁活动?我很困惑这一点。

在不破坏手机用户界面的情况下做到这一点的最佳方式是什么?

回答

1

设计良好的选项卡式UI从不使用“活动”选项卡内容。

你是正确的,你不能在当前实现中嵌套片段,但这并不意味着你唯一的选择是活动。标签应始终充当视图开关;选项卡切换从不会创建导航历史记录,并且选项卡导航应始终发生在同一活动中。

请记住,活动和片段只是MVC角度的控制器。它们可以响应生命周期事件并管理应用程序的元素以响应这些事件,包括UI中的视图。 UI的内容完全由当前窗口的视图层次结构决定,您可以以任何适合您的应用程序的方式操作视图层次结构。 (虽然最好还是遵循设计准则!)

由于片段具有管理视图子层次结构的内置机制,因此它们通常是分解用户界面的自然选择,但它们不是唯一的方法。 ViewPager PagerAdapter可以通过从资源系统中扩充视图子层次结构来处理视图子层次结构,以ListView的方式回收视图,或者可以创建的任何其他机制,并且如果不需要它们提供的生命周期事件,则根本不使用Fragments。对于不同的资源限定符,不同的布局资源可以基于屏幕尺寸使用不同的布局变体来包括或排除某些元素。

总之,不要停留在Fragments是实现多窗格UI的唯一方式,或实现ViewPager的每个页面的唯一方式的想法。它们都是强大的选项,但根据您的活动的信息架构,您可能会发现自己以不同于其他应用程序的方式使用它们,这没关系。总体而言,如果您在确定活动UI的逻辑切点时遇到问题,那么您可能正在为应用程序构建一个总体UI,该UI将与实施一样难以使用。让UI设计指导你的实现。如果每个选项卡自然切换出活动窗口的全部内容,则每个选项卡可能非常适合片段。也许这些平板电脑模式下的片段扩展了它们的功能,并使用不同的布局资源在其各自的布局中呈现多个窗格。

相关问题