Android Fragment简介及生命周期

来源:互联网 发布:python 中的if else 编辑:程序博客网 时间:2024/05/19 17:48

1. 继承关系

    java.lang.Object

         |__android.app.Fragment


    实现接口:ComponentCallbacks2 View.OnCreateContextMenuListener


    引入版本:API Level 11


    已知的子类:


    DialogFragment、ListFragment、PreferenceFragment、WebViewFragment 如下图所示:


2. 类概要

     一个Fragment是应用程序的用户界面或行为的一个片段,它能够被放置在一个Activity中。通过FragmentManager对象来实现与Fragment对象的交互,能够通过Activity.getFragmentManager()方法和Fragment.getFragmentManager()方法来获取FragmentManager对象。

    Fragment类有着广泛的应用,它的核心是代表了一个正在较大的Activity中运行的特俗的操作或界面。Fragment对象跟它所依附的Activity对象是紧密相关的,并且不能被分开使用。尽管Fragment对象定义了它们自己的生命周期,但是这个生命周期要依赖与它所在的Activity:如果该Activity被终止,那么它内部的Fragment是不能被启动的;当Activity被销毁时,它内部的所有Fragment对象都会被销毁。


3.Fragment生命周期及与Activity的对比

  


显示Fragment时(跟用户交互)要调用的核心的生命周期方法如下:


1. 把Fragment对象跟Activity关联时,调用onAttach(Activity)方法;


2. Fragment对象的初始创建时,调用onCreate(Bundle)方法;


3. onCreateView(LayoutInflater, ViewGroup, Bundle)方法用于创建和返回跟Fragment关联的View对象;


4. onActivityCreate(Bundle)方法会告诉Fragment对象,它所依附的Activity对象已经完成了Activity.onCreate()方法的执行;


5. onStart()方法会让Fragment对象显示给用户(在包含该Fragment对象的Activity被启动后);


6. onResume()会让Fragment对象跟用户交互(在包含该Fragment对象的Activity被启恢复后)。


Fragment对象不再使用时,要反向回调的方法:


1. 因为Fragment对象所依附的Activity对象被挂起,或者在Activity中正在执行一个修改Fragment对象的操作,而导致Fragment对象不再跟用户交互时,系统会调用Fragment对象的onPause()方法;


2. 因为Fragment对象所依附的Activity对象被终止,或者再Activity中正在执行一个修改Fragment对象的操作,而导致Fragment对象不再显示给用户时,系统会调用Fragment对象的onStop()方法。


3. onDestroyView()方法用于清除跟Fragment中的View对象关联的资源;


4. Fragment对象的状态被最终清理完成之后,要调用onDestroy()方法;


5. 在Fragment对象不再跟它依附的Activity关联的时候,onDetach()方法会立即被调用


4. 老版本兼容--v4包中的Fragment

     如果想要兼容老版本,即3.0以前的Android版本,可以采用v4包中的fragment. 。android.support.v4.app.Fragment:可以兼容到1.6的版本.

     这里需要注意的是,关于这两个fragment使用<fragment>标签的问题
     (1)app.fragment和v4.fragment都能使用<fragment>标签,但如果是app.fragment则没有什么特殊的地方继承Activity即可
     (2)当v4.fragment使用<fragment>标签的时候就要特别注意了:当这个Activity的布局中有<fragment>标签的时候,

      这个Activity必须继承FragmentActivity,否则就会报错

 





0 0
原创粉丝点击