- 什么是Fragment
Fragment是一种可以嵌入在Activity中的 UI 片段,它能让程序更加合理和充分
地利用大屏幕的空间,因而在平板和目前的大屏手机上应用的非常广泛(只要屏幕大,都会用到Fragment)。
一个碎片在一个活动中代表一个行为或用户界面的一部分。 你可以在一个单一的活动中组合使用多个碎片以建立一个多窗格的UI,并且可以在多个活动中重用一个碎片。你可以认为是一个拥有独立生命周期、能够独立接受输入事件、并且可以在活动运行时添加或移除的碎片作为一个活动的模块化部分(有点像一个你可以在不同活动中重用的子活动)。
Activity的频繁的创建和销毁比较消耗时间,使用Fragment可以避免这种情况。
Fragment轻量级的Activity: Fragment不需要在清单文件中注册。
- 静态使用Fragment
这是使用Fragment最简单的一种方式,把Fragment当成普通的控件,直接写在Activity的布局文件中。步骤:
- 在项目的资源中增加一个fragment的布局文件
- 继承Fragment,重写onCreateView决定Fragemnt的布局
- 在Activity的布局中添加Fragment(与添加普通的控件类似)。此处必须指明Fragment代表的哪个具体的Fragment类。(class属性或者是name属性),并且一定要给这个标签加id属性或者是tag属性
注意:
嵌套一层root布局。
将失去作用。
attachToRoot参数默认为true.
所以在使用LayoutInflater填充布局的时候,要注意inflate方法的参数,
如果是两个参数,则第二个参数可以采用null,如果使用三个参数的方法,
则要注意参数之间的搭配。
动态使用Fragment
- 由于Fragment从3.0新增,所以如果想兼容3.0以前的版本Fragment要使用V4包中的,使用Fragment的Activity也要应用v4包中的FragmentActivity。
- Fragment的onCreateView必须实现,这个方法的返回视图决定了,这个Fragment的显示视图。
- LayoutInflate对象的inflate()方法:这个方法一般接收两个参数,第一个参数就是要加载的布局id,第二个参数是
-
指给该布局的外部再嵌套一层父布局,如果不需要就直接传null。
Inflate()方法还有个接收三个参数的方法重载
- 如果root为null,attachToRoot将失去作用,设置任何值都没有意义,
- 如果root不为null,attachToRoot则在加载的布局文件的最外怪再
- 如果root不为null,attachToRoot设为false,则root参数
- 在不设置attachToRoot参数的情况下,如果root不为null,
静态使用Fragment仅仅是Fragment最简单的功能而已。Fragment真正的强大之处在于可以动态地添加到Activity当中,在程序运行时向Activity添加Fragment,程序的界面就可以定制的更加多样化。
什么是事务:就是多个操作合在一起做为一个整体,来一起操作,如果有一个失败的,就都失败
- 创建Fragment类(如果想兼容3.0以前的版本,也必须使用V4包中的)
- 使用Activity的getFragmentManager()获得FragmentManager对象.(如果是使用的v4包中的FragmentActivity,则调用getSupportFragmentManager()来获得FragmentManager对象)
- 获得事务对象:FragmentTr