原文地址:http://mobile.51cto.com/aprogram-448443_1.htm
Fragment是google由3.0开始加入SDK的界面解决方案。
后续由谷歌团队维护并发行了support包以支持低版本SDK来使用Fragment。
谁在使用Fragment
Fragment的优点 —————- * adding and removing Fragment可以做动画的效果,平滑过度
自动化堆栈管理,所以返回键可以删除动态添加的Fragment,最后销毁Activity,无需做过多判断
集成ActionBar的标签,可以替代TabHost,ActivityGrounp,与谷歌设计风格紧密结合
布局更加模块化.与原Activity中的Layout分块化,VCBase的分块化道理相同
灵活准确的生命周期去管理当前View的状态记录以及横竖屏处理
Fragment管理的View,可同时使用在Phone和Pad上,一份代码两份机器,可重用性高
Is a View, More than View
可以从startActivityForResult中接收到返回结果,但是View不能
唯一Id标识,可以从FragmentManager中获取id对应的Fragment
Fragment的缺点
与其说是Fragment的缺点,不如说是每个应用程序模块之间的通讯都面临地耦合问题
如何解决模块之间的通讯的耦合问题
1.使用接口,让Activity扮演管理角色,负责分发消息到该窗口的子View
该方案的缺点
2.使用LocalBroadcastManager + IntentFilter解决不同组件通讯,Intent负责搭载数据
该方案的缺点
3.EventBus
方便的单元测试
4.otto 这里不做介绍,下面有demo链接,基于注解的解偶通信组件
其实按照MVC的思想,Activity就真正的变成了Controler,
Activity中不涉及任何的业务逻辑的代码,只负责分发消息到不同的子View(Fragment)。
如果希望整个应用只有一个Activity,就需要再抽象出一层Controller,负责处理Activity与其子Controller的通讯
相关下载
项目
我们直接看代码吧,因为表达能力还训练,加上有点懒 ^_^