1、Fragment是Android在3.0版本后引入的,初衷是为了适应大屏幕的平板电脑。
2、使用Fragment可以吧屏幕分为几块,然后进行分组,进行模块化的管理
3、Fragment并不能单独使用,他需要嵌套在Activity中使用,尽管它有自己的生命周期,但还是会受到宿主Activity的生命周期的影响,例如:Activity被destory销毁了,它也会跟着销毁。
4、Fragment需要先导入android-support-v4的jar包才能使用Fragment功能。
5、加载方式:——静态加载 ——动态加载
6、静态加载Fragment实现流程:
①定义Fragment的xml布局文件。
②自定义Fragment类,需继承Fragment类或其子类,同时实现onCreateView()方法,在方法中,通过inflater.inflate加载布局文件,接着返回view。
③在需要加载Fragment的Activity对应的布局文件中fragment的name属性需要为全限定类名:即 包名+ “ . ” +fragment自定义的class文件。
④Activity调用布局即可。
7、动态加载Fragment主要分为四步:
①获取FragmentManager(fm),在Activity中可以直接通过getSupportFragmentManager(或者getFragmentManager)(通过这get...来管理activity中的fragment)得到。
②开启一个事务,通过调用beginTransaction方法开启(fm.beginTransaction();)。
③向容器中加入Fragment,调用add()方法或者replace()方法加载Fragment,(add(要传入的容器,fragment对象))。
④在前面的基础上还需调用commit()方法提交事务,当然还有其他方法,如remove。
8、FragmentTransaction(fragment事务)
一般用来对当前的Fragment进行管理,常用的针对Fragment的方法有:
------将一个fragment实例添加到Activity的最上层
add(要传入的容器,fragment对象);
------将一个fragment实例从Activity的fragment队列中删除
remove(Fragment fragment);
------替换containerViewId中的fragment实例,注意,它首先把containerViewId中所有fragment删除,然后再add进去当前的fragment
replace(要传入的容器,fragment对象);
9、使用add方法而不常用replace的原因:
——如果我们使用replace来切换页面,那么在每次切换的时候,Fragment都会重新实例化,重新加载一边数据,这样非常消耗性能和用户的数据流量。
——�这是因为replace操作,每次都会把Container中的现有的fragment实例清空,然后再把指定的fragment添加进去,就就造成了在切换到以前的fragment时,就会重新实例会fragment。
�——正确的切换方式是add(),切换时hide(),add()另一个Fragment;再次切换时,只需hide()当前,show()另一个。�这样就能做到多个Fragment切换不重新实例化
10、Fragment管理与Fragment事务