android开发之Fragment 的生命周期及使用方法详解

  次阅读 作者:智能小宝 来源:互联网 2015-09-29 10:55 我要评论(0)

Fragment 的基础知识介绍 1.1 概述

1.1.1 特性

By hebang32624

Fragment 是 activity 的界面中的一部分或一种行为。可以把多个 Fragment 组合到一个 activity 中来创建一 个多面界面并且可以在多个 activity 中重用一个 Fragment。可以把 Fragment 认为模块化的一段 activity,它具 有自己的生命周期,接收它自己的事件,并可以在 activity 运行时被添加或删除。

Fragment 不能独立存在,它必须嵌入到 activity 中,而且 Fragment 的生命周期直接受所在的 activity 的影 响。例如:当 activity 暂停时,它拥有的所有的 Fragment 都暂停了,当 activity 销毁时,它拥有的所有 Fragment 都被销毁。然而,当 activity 运行时(在 onResume()之后,onPause()之前),可以单独地操作每个 Fragment, 比如添加或删除它们。当在执行上述针对 Fragment 的事务时,可以将事务添加到一个栈中,这个栈被 activity 管 理,栈中的每一条都是一个 Fragment 的一次事务。有了这个栈,就可以反向执行 Fragment 的事务,这样就可以在 Fragment 级支持 返回 键(向后导航)。

当向 activity 中添加一个 Fragment 时,它须置于 ViewGroup 控件中,并且需定义 Fragment 自己的界面。可 以在 layoutxml 文件中声明 Fragment,元素为:<fragment>;也可以在代码中创建 Fragment,然后把它加入到 ViewGroup 控件中。然而,Fragment 不一定非要放在 activity 的界面中,它可以隐藏在后台为 actvitiy 工作。

1.1.2 生命周期

onCreate():

当创建 fragment 时系统调用此方法。在其中必须初始化 fragment 的基础组件们。可参考 activity 的说明。 onCreateView():

系统在 fragment 要画自己的界面时调用(在真正显示之前)此方法。这个方法必须返回 frament 的 layout 的根控 件。如果这个 fragment 不提供界面,那它应返回 null。

onPause():

大多数程序应最少对 fragment 实现这三个方法。当然还有其它几个回调方法可应该按情况实现之。所有的生命周 期回调函数在 操控 fragment 的生命周期 一节中有详细讨论。

下图为 fragment 的生命周期(它所在的 activity 处于运行状态)。

添加Fragments

onAttach()

onCreate()

onCreateView()

onActivityCreated()

onStart()

onResume()

Fragments是活动的(正在使 用)

Fragment从

返回堆栈中 返回到布局文件

用户使用返 回功能或 Fragments 被移除 (替换)

Fragments被

添加到返回 堆栈中,接着 被移除(替换)

onPause()

onStop

onDestroyView()

onDestroy()

onDetach()

Fragments被销毁

图 1 Fragment 生命周期

1.1.3 派生类

DialogFragment

显示一个浮动的对话框。使用这个类创建对话框是替代 activity 创建对话框的最佳选择.因为可以把 fragmentdialog 放入到 activity 的返回栈中,使用户能再返回到这个对话框。

ListFragment

显示一个列表控件,就像 ListActivity 类,它提供了很多管理列表的方法,比如 onListItemClick()方法响应 click 事件。 PreferenceFragment

显示一个由 Preference 对象组成的列表,与 PreferenceActivity 相同。它用于为程序创建 设置 activity。

1.2 范例

写一个读新闻的程序,可以用一个 fragment 显示标题列表,另一个 fragment 显示选中标题的内容,这两个 fragment 都在一个 activity 上,并排显示。那么这两个 fragment 都有自己的生命周期并响应自己感兴趣的事件。于 是,不需再像手机上那样用一个 activity 显示标题列表,用另一个 activity 显示新闻内容;现在可以把两者放在一个 activity 上同时显示出来。如下图:

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...