2012-04-28 32 views
1

在Ice Cream Sandwich/Honeycomb出现之前,开发人员曾经围绕活动制作逻辑流程,以处理屏幕的UI交互。我面临的任务是将每个选项卡作为片段活动进行组合的选项卡/视图分页器。片段活动的最佳设计模式

最终的结果是,它的下降到我原来的代码似乎是混乱或坏的方法来设计片段活动!

考虑一下,一个活动管理一个屏幕,该活动控制该屏幕的所有UI方面。现在,通过使用ActionBarSherlock,我将屏幕UI控件移动到一个片段活动的布局中,现在有一个主要活动,其中包含用于从一个标签滑动到另一个标签的标签处理机制,就像以前一样,开始一个意图开展另一项活动。

我的问题是这样的:现在拆分原始代码的最佳方式是在片段活动中进行拆分?我想过使用处理程序将片段活动内部的消息传递给主要活动,但事实证明,我觉得是错误的方法。

我为此使用了ActionBarSherlock。

已经搜索,但无法找到此场景的具体示例以及如何处理它。

编辑:后从CommonsWare的意见,这是意图,看这里显示的http://androiduipatterns.com“刘易斯·卢埃林和Facebook”截图第二图像,这就是我想要实现..

之前:Activity处理一个屏幕的UI方面。

现在:SherlockFragmentActivityViewPager与Tab主机,这是apk的“主要”活动,并且每个选项卡片段从SherlockFragment延伸。每个标签现在都是一个UI控件的屏幕。

+0

“每个标签充当片段活动的组合标签/查看页面” - 活动内部的活动(即“ActivityGroup”)已被弃用。片段后面的一半是摆脱活动内部的活动。 – CommonsWare 2012-04-28 22:17:41

+0

指的是谷歌的播放商店布局,你刷卡和视图更改...看看http://www.androiduipatterns.com/“刘易斯Llewellyn和Facebook”屏幕截图上显示的第二个图像,这就是我'试图实现.. – t0mm13b 2012-04-28 22:19:55

+0

这是一个'FragmentActivity',持有一个'ViewPager',它可能使用一个'FragmentPagerAdapter',它包含了片段。很可能没有嵌套活动。 – CommonsWare 2012-04-28 22:23:10

回答

3

恕我直言,ViewPager中的每个片段都会处理它自己,因为它不知道目前可能存在哪些其他片段。该片段中可能影响其他片段或整个活动的任何事件都可以通过getActivity()传递给托管活动,如果您计划从多个活动托管此片段,可能会将其转换为接口。不需要Handler

+0

是的,我可以在你想说的内容中将它想象成这样,取消最初在活动中的代码并将其放入FragmentActivity中,以便与其他人隔离开来? – t0mm13b 2012-04-28 22:48:36

+0

@ t0mm13b:好吧,我不能评论那部分,因为这意味着对你目前拥有的内容有深刻的理解,而且我无法从这里看到你的显示器。 – CommonsWare 2012-04-28 22:52:19

+0

哈哈!够了,耶。这是一个公平的评论:)从我+1。我猜这个故事有道德! – t0mm13b 2012-04-28 23:00:28

2

所以我想你想要的是不跨不同的碎片复制代码,amiright?在非常相似的片段中,我所做的是创建一个具有相同代码的基本片段,从中扩展。另一个选项,Google经常注意到的一点是,使用(静态)方法创建助手类。 无论如何请确保永远不要从不同的片段调用片段。