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实现至少这3个方法,可是还有一些其余回调方法你也应当用来去处理fragment生命周期的各类阶段.所有的生命周期回调方法将会在后面章节 Handlingthe Fragment Lifecycle 中讨论.
ui
除了继承基类 Fragment , 还有一些子类你可能会继承:spa