API介绍
介绍和基本使用
API中关于Fragment的介绍
Fragment是一种放置在#Activity中的向用户展示或供用户操作的UI界面。通过Activity.getFragmentManager()或者Fragment.getFragmentManager()来获取#FragmentManager对象来管理与Fragment的交互。
有很多中不同的Fragment使用方式来达到各种各样的效果。其核心是,它将一个庞大的Activity中部分独立的操作或者界面独立了出来。Fragment与它依附的Activity的关系是紧密的,并且不能被Activity之外的事物使用。尽管Fragment有自己的生命周期,但这个生命周期决定于他所依附的Activity:Activity停止,Fragment停止;Activity销毁,Fragment销毁。
Fragment的子类必须有一个公共的无参构造函数,系统会在必要时比如在状态还原期间重建Fragment实例,这就需要这个构造方法。如果这个无参构造没有找到,有时会发生运行时异常。
旧版本兼容
Fragment是在android 3.0版本引入进来的。老版本可以通过v4包下的android.support.v4.app.FragmentActivity来实现相同功能。可以看看这篇Fragments For All来了解更多细节。
生命周期
虽然Fragment的生命周期是与它所在的Activity相关联,但是在标准的activity生命周期处理逻辑之外,它有它自己的处理:它里面包含了像onResume这种基本的activity的生命周期方法。但是更为重要的是这些方法让界面交互和UI之间产生联系。
下面列出的是Fragment从启动到展现给用户所调用的核心生命周期方法:
- onAttach() 调用该方法时Fragment会被连接到它的父Activity上。
- onCreate() 调用该方法来进行Fragment的初始化创建。
- onCreateView() 创建并返回Fragment绑定的view。
- onActivityCreated() 告诉Fragment它所依附的Activity完成了onCreate()方法。
- onViewStateRestored() 告诉Fragment保存过的状态已经恢复。
- onStart() Fragment对用户可见(基于Activity也调用onStart())。
- onResume() Fragment对用户是活动的,可获取焦点的。
如果Fragment不再使用,那么它会调用如下生命周期方法:
- onPause() Fragment不再允许有用户交互的操作,原因是Fragment附属的Activity要么也处于暂停状态,要么就是Fragment中的操作正在修改Activity。
- onStop() Fragment对用户不可见,原因是Fragment附属的Activity要么也处于停止状态,要么就是Fragment中的操作正在修改Activity。
- onDestroyView() 当Fragment的View被分离时,调用该方法,清理绑定View的相关资源,解除绑定。
- onDestroy() 在整个生命周期结束时调用该方法,清除所有的资源,包括结束线程和关闭数据库连接等。
- onDetach() 当Fragment从它的父Activity上分离时,调用该方法。
上述过程,可以图示: