Fragment

196 阅读2分钟

一、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其效果才会在屏幕上展现出来。