史上关于Fragment最全参考资料:http://www.apkbus.com/forum.php?mod=viewthread&tid=245035&extra=&_dsign=52ff014a
Android 3.0引入Fragment的初衷是为了适应大屏幕的平板电脑,由于平板电脑的屏幕比手机屏幕大,因此可以容纳更多的UI组件,且这些UI组件之间存在交互关系,Android运行在各种各样的设备中,有小屏幕的手机,超大屏的平板甚至电视。针对屏幕尺寸的差距,很多情况下,都是先针对手机开发一套App,然后拷贝一份,修改布局以适应平板神马超级大屏的。难道无法做到一个App可以同时适应手机和平板么,当然了,必须有啊。Fragment的出现就是为了解决这样的问题。你可以把Fragment当成Activity的一个界面的一个组成部分,甚至Activity的界面可以完全有不同的Fragment组成,更帅气的是Fragment拥有自己的生命周期和接收、处理用户的事件,这样就不必在Activity写一堆控件的事件处理的代码了。更为重要的是,你可以动态的添加、替换和移除某个Fragment。
通常来说,创建Fragment需要实现如下三个方法;
onCreate():系统创建Fragment对象后回调该方法,实现代码中只初始化,想要在Fragment中保持的必要组件,当fragment被暂停或者是停止后可以恢复。
onCreateView():当Fragnent绘制界面组件时,回调该方法,该方法必须返回一个View,该View就是Fragment所显示的View.
onPause():当用户离开该Fragment时将会回调该方法。
Fragment与Activity通信
将一个Fragment添加到Activiy中通常有两种方法:
1.在布局文件中使用<frgment.../>元素添加Fragment,<fragment.../>元素的android:name属性指定Fragment的实现类,android:id,android:tag属性都可以用来标示Fragment,接下来Activity可以通过FindFragmentById()或者是FindFragmentByTag()获取该Fragment。
2.在java代码中通过FragmentTransaction对象的add()方法来添加Fragment.
Fragment可以获取他所在的Activity:调用Fragment的getActivity()方法可返回他所在的Activity
Activity获取它所包含的Fragmnet:调用Activity关联的FragmentManager的findFragmentByID(int id)或findFragmentByTag(String TAG)方法即可获取指定的Fragment.
Fragment与Activity传递数据