Android在3.0中引入了Fragments的概念,主要目的是在大屏幕设备上——例如平板电脑上,支持更加动态和灵活的UI设计。平板电脑的屏幕要比手机的大很多,有更多的空间来放更多的UI组件,并且这些组件之间会产生更多的交互。Fragment在你的应用中相当是一个模块化和可重用的组件,因为Fragment定义了它自己的布局,以及通过使用它自己的生命周期回调方法定义了它自己的行为,你可以将Fragment包含到多个Activity中。

Fragment知识概要:
1、Fragment可以作为Activity界面的一部分组成出现
2、可以在一个Activity中同时出现多个Fragment,并且一个Fragment也可以在多个Activity中使用
3、在Activity运行的过程中,可以添加、移除或替换Fragment
4、Fragment可以响应自己的输入事件,并且有自己的生命周期,它们的生命周期会受宿主Activity的生命周期影响

onCreateView():Fragment第一次绘制它的用户界面的时候,系统会调用此方法,为了绘制Fragment的UI,此方法必须返回一个View,如果不显示UI,返回null即可。

属性:

android:foreground设置前景图,在所有子视图的前面
android:foregroundGravity设置前景图的位置
加载方式
静态加载:在Activity的layout文件中声明Fragment,需要特别注意的是<fragment>中的android:name属性指定了在layout中实例化的Fragment类。android:id属性提供一个唯一ID和android:tag属性提供一个唯一字符串,必须要有一个。

动态加载:

撰写代码将Fragment添加到一个Activity layout中,add()添加一个Fragment(指定要添加的fragment和插入的View),与此类似的还有移除remove()、替换replace()。

处理Fragment事务:根据用户的交互情况,对Fragment进行添加、移除、替换,以及执行其他动作,提交给Activity的每一套变化被称为一个事务。

//获取Fragment管理者
FragmentManager fragmentManager = getFragmentManager();
//通过Fragment管理者开启一个事务的对象
FragmentTransaction beginTransaction = fragmentManager.beginTransaction();

每一个事务都是同时执行一套变化,可以在一个事务中设置你所想执行的变化,包括add()、remove()、replace(),然后提交给Activity,必须调用commit()方法。如果允许用户通过按下BACK按键返回到前一个Fragment状态,调用commit()之前可以加入addToBackStack()方法。


加载方式具体参考:Android中的Fragment使用详解之页面加载

生命周期参考:Android中的Fragment使用详解之生命周期

Fragment与Activity通信:
1、Fragment可调用getActivity()方法获取它所在的Activity
2、Activity可调用FragmentManager的findFragmentById()或findFragmentByTag()方法获取Fragment
Activity→Fragment:在Activity中创建Bundle数据包,并调用Fragment的setArguments(Bundle bundle)方法
Fragment→Activity:需要在中定义一个内部回调接口,再让包含该Fragment的Activity实现该回调接口。这样Fragment可以调用该回调方法将数据传递给Activity。

实现详情参考:Android中的Fragment使用详解之数据传递

实例源码下载