读书人

Android中Fragment的运用

发布时间: 2012-08-11 20:50:31 作者: rapoo

Android中Fragment的应用

?

Fragment 表现 Activity 中用UI的一个行为或者一部分. 可以组合多个fragment放在一个单独的activity中来创建一个多界面区域的UI,并可以在多个activity里重用某一个fragment.把fragment 想象成一个activity的模块化区域, 有它自己的生命周期, 接收属于它的输入事件, 并且可以在activity运行期间添加和删除.
Fragment 必须总是被嵌入到一个activity中, 它们的生命周期直接被其所属的宿主activity的生命周期影响. 例如, 当activity被暂停,那么在其中的所有fragment也被暂停; 当activity被销毁, 所有隶属于它的fragment也被销毁. 然而,当一个activity正在运行时(处于resumed状态), 我们可以独立地操作每一个fragment, 比如添加或删除它们. 当处理这样一个fragment事务时, 也可以将它添加到activity所管理的back stack -- 每一个activity中的back stack实体都是一个发生过的fragment事务的记录. back stack允许用户通过按下 BACK 按键从一个fragment事务后退(往后导航).
将一个fragment作为activity布局的一部分添加进来时, 它处在activity的view hierarchy中的ViewGroup中, 并且定义有它自己的view布局.通过在activity的布局文件中声明fragment来插入一个fragment到你的activity布局中, 或者可以写代码将它添加到一个已存在的ViewGroup.然而, fragment并不一定必须是activity布局的一部分; 也可以将一个fragment作为activity的隐藏的后台工作者.
本文档描述了如何使用fragment创建你的应用程序, 包括:当被添加到activity的back stack后, fragment如何维护他们的状态. 在activity中,与activity和其他fragment共享事件.构建到activity的action bar.以及更多内容.

设计哲学
????Android在3.0中引入了fragments的概念,主要目的是用在大屏幕设备上--例如平板电脑上,支持更加动态和灵活的UI设计. 平板电脑的屏幕要比手机的大得多,有更多的空间来放更多的UI组件,并且这些组件之间会产生更多的交互.Fragment允许这样的一种设计,而不需要你亲自来管理view hierarchy的复杂变化. 通过将activity的布局分散到fragment中, 你可以在运行时修改activity的外观, 并在由activity管理的back stack中保存那些变化.?
例如, 一个新闻应用可以在屏幕左侧使用一个fragment来展示一个文章的列表, 然后在屏幕右侧使用另一个fragment来展示一篇文章 2个fragment并排显示在相同的一个activity中, 并且每一个fragment拥有它自己的一套生命周期回调方法,并且处理它们自己的用户输入事件. 因此, 取代使用一个activity来选择一篇文章,而另一个activity来阅读文章 的方式, 用户可以在相同的activity中选择一篇文章并且阅读
?fragment在你的应用中应当是一个模块化和可重用的组件. 即,因为fragment定义了它自己的布局, 以及通过使用它自己的生命周期回调方法定义了它自己的行为, 你可以将fragment包含到多个activity中. 这点特别重要, 因为这允许你将你的用户体验适配到不同的屏幕尺寸.举个例子, 你可能会仅当在屏幕尺寸足够大时,在一个activity中包含多个fragment, 并且,当不属于这种情况时,会启动另一个单独的,使用不同fragment的activity.
????继续之前那个新闻的例子 -- 当运行在一个特别大的屏幕时(例如平板电脑), app可以在Activity A中嵌入2个fragment. 然而,在一个正常尺寸的屏幕(例如手机)上,没有足够的空间同时供2个fragment用, 因此, Activity A 会仅包含文章列表的fragment, 而当用户选择一篇文章时, 它会启动Activity B, 它包含阅读文章的fragment.?因此, 应用可以同时支持图1中的2种设计模式.

创建Fragment????Android中Fragment的运用
要创建一个fragment, 必须创建一个 Fragment 的子类 (或者继承自一个已存在的它的子类). Fragment 类的代码看起来很像 Activity .它包含了和activity类似的回调方法, 例如 onCreate(), onStart(), onPause, 以及 onStop(). 事实上, 如果你准备将一个现成的Android应用转换到使用fragment, 你可能只需简单的将代码从你的activity的回调函数分别移动到你的fragment的回调方法.
通常, 应当至少实现如下的生命周期方法:
读书人网 >Android

热点推荐