android之Fragment(官网资料翻译)一

目录(?)[+]html

  1. Fragment要点
  2. 设计哲学
  3. 建立Fragment
    1. 添加一个用户界面
    2. 将fragment添加到activity
    3. 撰写代码将fragment添加到一个已存在的ViewGroup
    4. 添加一个无UI的fragment
  4. 管理Fragment
  5. 处理Fragment事务
  6. 与Activity通讯
    1. 为Activity建立事件回调方法
    2. 添加项目到ActionBar
  7. 处理fragment的生命周期
    1. 与activity生命周期的协调工做
 

Fragment要点

  1. Fragment做为Activity界面的一部分组成出现
  2. 能够在一个Activity中同时出现多个Fragment,而且,一个Fragment亦可在多个Activity中使用。
  3. 在Activity运行过程当中,能够添加、移除或者替换Fragment(add()、remove()、replace())
  4. Fragment能够响应本身的输入事件,而且有本身的生命周期,固然,它们的生命周期直接被其所属的宿主activity的生命周期影响。

设计哲学

Android在3.0中引入了fragments的概念,主要目的是用在大屏幕设备上--例如平板电脑上,支持更加动态和灵活的UI设计。平板电脑的屏幕要比手机的大得多,有更多的空间来放更多的UI组件,而且这些组件之间会产生更多的交互。Fragment容许这样的一种设计,而不须要你亲自来管理 viewhierarchy的复杂变化。 经过将activity的布局分散到fragment中, 你能够在运行时修改activity的外观,并在由activity管理的back stack中保存那些变化.(http://developer.android.com/guide/topics/fundamentals/fragments.html android

 

例如, 一个新闻应用能够在屏幕左侧使用一个fragment来展现一个文章的列表,而后在屏幕右侧使用另外一个fragment来展现一篇文章--2个fragment并排显示在相同的一个activity中,而且每个fragment拥有它本身的一套生命周期回调方法,而且处理它们本身的用户输入事件。 所以, 取代使用一个activity来选择一篇文章而另外一个activity来阅读文章的方式,用户能够在同一个activity中选择一篇文章而且阅读, 如图所示:设计模式


fragment在你的应用中应当是一个模块化和可重用的组件.即,由于fragment定义了它本身的布局, 以及经过使用它本身的生命周期回调方法定义了它本身的行为,你能够将fragment包含到多个activity中. 这点特别重要, 由于这容许你将你的用户体验适配到不一样的屏幕尺寸.举个例子,你可能会仅当在屏幕尺寸足够大时,在一个activity中包含多个fragment,而且,当不属于这种状况时,会启动另外一个单独的,使用不一样fragment的activity.
ide

 继续以前那个新闻的例子 -- 当运行在一个特别大的屏幕时(例如平板电脑),应用能够在Activity A中嵌入2个fragment。然而,在一个正常尺寸的屏幕(例如手机)上,没有足够的空间同时供2个fragment用, 所以, Activity A会仅包含文章列表的fragment, 而当用户选择一篇文章时, 它会启动ActivityB,它包含阅读文章的fragment.所以, 应用能够同时支持上图中的2种设计模式。模块化

建立Fragment

要建立一个fragment, 必须建立一个 Fragment 的子类 (或者继承自一个已存在的它的子类). Fragment类的代码看起来很像 Activity 。它包含了和activity相似的回调方法, 例如onCreate()、 onStart()、onPause()以及 onStop()。事实上, 若是你准备将一个现成的Android应用转换到使用fragment,可能只需简单的将代码从你的activity的回调方法分别移动到你的fragment的回调方法便可。

一般, 应当至少实现以下的生命周期方法:工具

  • onCreate()
    当建立fragment时, 系统调用该方法.
    在实现代码中,应当初始化想要在fragment中保持的必要组件, 当fragment被暂停或者中止后能够恢复.
  • onCreateView()
    fragment第一次绘制它的用户界面的时候, 系统会调用此方法. 为了绘制fragment的UI,此方法必须返回一个View, 这个view是你的fragment布局的根view. 若是fragment不提供UI, 能够返回null.
  • onPause()
    用户将要离开fragment时,系统调用这个方法做为第一个指示(然而它不老是意味着fragment将被销毁.) 在当前用户会话结束以前,一般应当在这里提交任何应该持久化的变化(由于用户有可能不会返回).


 

其生命周期图以下:布局


大多数应用应当为每个fragment实现至少这3个方法,可是还有一些其余回调方法你也应当用来去处理fragment生命周期的各类阶段.所有的生命周期回调方法将会在后面章节 Handlingthe Fragment Lifecycle 中讨论.
ui

除了继承基类 Fragment , 还有一些子类你可能会继承:spa

 

  • DialogFragment
    显示一个浮动的对话框.
    用这个类来建立一个对话框,是使用在Activity类的对话框工具方法以外的一个好的选择,
    由于你能够将一个fragment对话框合并到activity管理的fragment back stack中,容许用户返回到一个以前曾被摒弃的fragment.
  • ListFragment
    显示一个由一个adapter(例如 SimpleCursorAdapter)管理的项目的列表, 相似于ListActivity.
    它提供一些方法来管理一个list view, 例如 onListItemClick()回调来处理点击事件.
  • PreferenceFragment 显示一个 Preference对象的层次结构的列表, 相似于PreferenceActivity. 这在为你的应用建立一个"设置"activity时有用处.
相关文章
相关标签/搜索