您的位置:首页 > 移动开发 > Android开发

Android开发指南----Fragment详解

2015-08-02 16:20 441 查看
Fragment代表了Activity里的一个行为,或者Activity UI的一部分。你可以在一个Activity里构造多个Fragment,也可以在多个Activity里复用一个Fragment。你可以认为Fragment是Activity里的一个模块区域,Fragment有自己的lifecycle,接收自己的input事件。你可以在Activity运行的时候添加或者删除一个Fragment。

一个Fragment必须嵌在一个Activity里,它的lifecycle直接受到主Activity的lifecycle的影响,例如,当一个Activity处于paused状态时,所有的Fragment也处于paused状态,当一个Activity处于运行状态时(it is in the resumed lifecycle state),你可以独立的操作每个Fragment,例如添加或者删除它,当你执行一个Fragment事务处理时,你可以将该操作加入到Activity管理的back stack里,每一个back stack项是记录发生的一个Fragment事务。back stack允许你通过回退按钮来回退一个Fragment事务处理。

当你在你的Activity layout里使用元素插入一个fragment,也可以在代码 里添加一个Fragment到已存在的ViewGroup里。然而,Fragment的视图布局 不是必须的,你也可以使用没有UI的Fragment作为你的Activity的一个不可见的worker。

1.设计指南

Android的fragment机制是在Android上引进的,主要是支持大尺寸屏幕上的动态和灵活的UI设计,例如平板电脑。由于平板的尺寸远远大于手机设备,它有足够的空间来进行UI界面的组合和交互,Fragment机制可以让你避免复杂的视图结构的管理,来实现UI的动态交互。将Activity里的布局,分解成多个Fragment你能够在Activity运行时动态改变Activity的外观,在back stack里维持这些改变。

例如,一个应用可以使用一个 fragment 在左侧显示文章的标题,使用另一个fragment 在右侧显示文章的内容—两个 fragment 都在同一个 activity 里,每个 fragment 有自己独立的一套lifecycle,可以处理自己的用户输入事件。这样,可以规避用一个 activity 来实现选择文章,

另一个 activity 来实现阅读文章的旧方法;利用 fragment,可以在一个 activity 里实现选择文章和阅读文章。如下图所示:


Figure 1. An example of how two UI modules defined by fragments can be combined into one activity for a tablet design, but separated for a handset design.

你应当设计每一个 fragment,作为 activity 里可复用的组件模块。因为每个 fragment 定义自己的layout,自己的行为,自己的lifecycle callback,你可以在多个activity里使用一个fragment。一个模块化的 fragment,允许在不同尺寸的设备上改变 fragment 的排列。当你打算涉及你

的应用既支持平板又支持手机时,你可以在不同的布局配置上复用你的 fragment,根据相应的显示空间优化用户的体验。例如,在手机上,fragment 可能只能同时显示一屏 UI 界面。

创建一个Fragment,你必须实现一个类继承Fragment类,Fragment类包含了与Activity类相似的回调函数,例如onCreate(),onStart(),onPause(),onStop()。实际上,你可以简单的将Activity 里实现的回调函数拷贝到你的 fragment 类里,进行修改。

通常,你至少需要考虑实现下面的回调函数:

onCreate()

当创建 fragment 时系统会调用此函数。你应当在这里初始化 fragment 必须的组件。

onCreateView()

当 fragment 绘画 UI 界面时系统调用此函数。这个方法必须返回一个 View,作为 fragment的根布局。

onPause()

当用户离开此 fragment 界面时,系统调用此函数。你应当在这里保存你需要维持的数据。

基于 fragment 类,系统已实现了下面的一些扩展子类:

 DialogFragment

 ListFragment

 PreferenceFragment



可以看到Fragment比Activity多了几个额外的生命周期回调方法:

onAttach(Activity)

当Fragment与Activity发生关联时调用。

onCreateView(LayoutInflater, ViewGroup,Bundle)

创建该Fragment的视图

onActivityCreated(Bundle)

当Activity的onCreate方法返回时调用

onDestoryView()

与onCreateView想对应,当该Fragment的视图被移除时调用

onDetach()

与onAttach相对应,当Fragment与Activity关联被取消时调用

注意:除了onCreateView,其他的所有方法如果你重写了,必须调用父类对于该方法的实现,

3.添加一个Fragment UI界面
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: