在Ice Cream Sandwich / Honeycomb出现之前,开发人员习惯于围绕活动制作逻辑流程,以处理屏幕的UI交互。我面临的任务是制作一个组合的tab / view-pager,每个标签都充当片段活动。
最终的结果是它的原始代码看起来很乱或者是设计片段活动的坏方法!
考虑一下,一个管理一个屏幕的活动,该活动控制该屏幕的所有UI方面。现在,通过使用ActionBarSherlock,我已经将屏幕UI控件移动到片段活动的布局中,现在有一个主要活动,其中有一个用于从一个选项卡滑动到下一个选项卡的选项卡处理机制,就像以前一样,开始一个意图发起另一项活动。
我的问题是:现在将原始代码拆分为片段活动的最佳方法是什么?我已经考虑过使用处理程序在内部从片段活动到主活动传递消息,但结果却是我的感觉,这是错误的方法。
我正在使用ActionBarSherlock。
已搜索但无法找到此方案的具体示例以及如何处理它。
编辑:在CommonsWare发表评论之后,这是意图,请看http://androiduipatterns.com“Lewis Llewellyn和Facebook”屏幕截图中显示的第二张图片,这就是我想要的实现..
之前:Activity
处理一个屏幕的UI方面。
现在:SherlockFragmentActivity
与ViewPager
一起使用Tab-host,这是apk的“主要”活动,每个标签片段都从SherlockFragment
延伸。现在每个标签都是一个带有UI控件的屏幕。
答案 0 :(得分:3)
恕我直言,ViewPager
中的每个片段都处理自己,因为它不知道目前可能存在哪些其他片段。该片段中可能影响其他片段或整个活动的任何事件都可以通过getActivity()
传递给托管活动,如果您计划从多个活动托管此片段,则可能将其转换为接口。不需要Handler
。
答案 1 :(得分:2)
所以我想你想要的不是在不同的片段中复制代码,amiright?我在非常相似的片段的情况下做的是创建一个basefragment,其中包含我扩展的相同代码。谷歌经常注意到的另一个选择是使用(静态)方法创建辅助类。 在任何情况下,请确保永远不要从不同的片段调用片段。