一、Fragment生命周期
Fragment比Activity多了几个生命周期的回调方法
- onAttach(Activity):当Fragment比Activity发生关联的时候调用
- onCreateView(LayoutInflater, ViewGroup, Bundle):创建该Fragment的视图
- onActivityCreated(Bundle):当Activity的onCreated方法返回时调用
- onDestroyView()与onCreateView()方法相对应,当该Fragment的视图被移除时调用
- onDetach()与onAttach()方法相对应,当Fragment与Activity取消联系时调用。
注意:除了onCreateView,其他的所有方法重写,必须调用父类对于该方法的实现。
3、Fragment的使用方法
静态使用Fragment
步骤:
(1)创建一个类继承Fragment,重写onCreateView方法,来确定Fragment要显示的内容
(2)在Activity中声明该类,与普通的View对象一样
动态使用Fragment
注意事项:
(1)在Activity对应的布局中写上一个FrameLayout控件,此控件的作用是当作Frgment的容器,Fragment通过FrameLayout显示在Activity里。
(2)准备好你的Fragment,然后再Activity中实例化,v4包的Fragment是通过getSupportFragmentManager()方法新建Fragment管理器对象,
(3)通过Fragment管理器对象调用beginTransaction()方法,实例化FragmentTransaction对象。
(4)FragmentTransaction对象,FragmentTransaction的方法主要有以下几种:
- FragmentTransaction.add()向Activity中添加一个Fragment
- FragmentTransaction.remove()从Activity中移除一个Fragment,如果被移除的Fragment没有添加到回退栈,这个Fragment实例就会被销毁
- FragmentTransaction.replace()使用另外一个Fragment替换当前的,实际上就是remove()然后add()的合体。
- FragmentTransaction.hide()隐藏当前的Fragment,仅仅是设为不可见,并不会销毁
- FragmentTransaction.show()显示之前隐藏的Fragment
- detach()会将view从UI中移除,和remove()不同,此时fragment的状态依然有FragmentManager维护
- attach()重建view视图,附加到UI上显示
- FragmentTransaction.commit()提交视图
注意:在add/replace/hide/show以后都要commit其效果才会在屏幕上展现出来。