Fragment要点

  1. Fragment作为Activity界面的一部分组成出现。

  2. 可以在一个Activity中同时出现多个Fragment,并且,一个Fragment亦可在多个Activity中使用。

  3. 在Activity运行过程中,可以添加、移除或者替换Fragment(add()、remove()、replace())。

  4. Fragment可以响应自己的输入事件,并且有自己的生命周期,当然,它们的生命周期直接被其所属的宿主activity的生命周期影响。

  Android在3.0开始引入了fragments的概念,提供了更加动态和灵活的UI设计,而不需要自己来管理ViewHierarchy(视图层次)的复杂变化。通过将activity的布局分散到fragment中,可以在运行时修改activity的外观,并在由activity管理的Back Stack中保存这些变化。

  从以上例图,可以知道:fragment在开发的应用程序中应当是一个模块化和可重用的组件。即fragment定义了自己的布局,以及通过使用它自己生命周期的回调方法定义其自己的行为,由此可以将fragment包含到多个activity中

创建Fragment

  要创建一个fragment,必须创建一个Fragment的子类(或者继承自一个已存在的Fragment的子类)。当然,Fragment类的代码很类似Activity,它包含了和activity相似的回调方法。通常一个fragment要至少实现如下生命周期的回调方法:

onCreate()

当创建fragment时,系统调用该方法。在实现代码中,应当初始化想要在fragment中保持的必要组件,当fragment被暂停或者停止后可以恢复。

onCreateView()

fragment第一次绘制它自己的用户界面时,系统会调用此方法。为了绘制fragment的UI,此方法必须返回一个View,这个view就是你fragment布局的根view。如果fragment不提供UI,可以返回null。

onPause()

用户将要离开fragment时,系统调用这个方法作为第一个指示(然而它不总是意味着fragment将被销毁)。在当前用户会话结束之前,通常应当在这里提交任何应该持久化的变化(因为用户有可能不会返回)。

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

  • DialogFragment
    显示一个浮动的对话框.  
    用这个类来创建一个对话框,是使用在Activity类的对话框工具方法之外的一个好的选择,因为你可以将一个fragment对话框合并到activity管理的fragment back stack中,允许用户返回到一个之前曾被摒弃的fragment。

  • ListFragment
    显示一个由一个adapter(例如 SimpleCursorAdapter)管理的项目的列表,类似于ListActivity。
    它提供一些方法来管理一个list view,例如 onListItemClick()回调来处理点击事件。

  • PreferenceFragment
    显示一个 Preference对象的层次结构的列表,类似于PreferenceActivity。
    这在为你的应用创建一个"设置"activity时有用处。

Android 3.0开始引入fragments(碎片、片段)类的更多相关文章

  1. Android 7.0 新增功能和api

    Android 7.0 Nougat 为用户和开发者引入多种新功能.本文重点介绍面向开发者的新功能. 请务必查阅 Android 7.0 行为变更以了解平台变更可能影响您的应用的领域. 要详细了解 A ...

  2. Android 5.0 API新增和改进

    开始开发 要构建 Android 5.0 版应用,您必须先下载 Android SDK,然后使用 SDK 管理器下载 Android 5.0 SDK 平台和系统映像. 更新您的目标 API 级别 要进 ...

  3. android 5.0新特性

    Android Lollipop 面向开发人员的主要功能 Material Design 设计 注重性能 通知 以大屏幕呈现 以文档为中心 连接性能再上一级 高性能图形 音频处理功能更强 摄像头和视频 ...

  4. Android 8.0 功能和 API

    Android 8.0 为用户和开发者引入多种新功能.本文重点介绍面向开发者的新功能. 用户体验 通知 在 Android 8.0 中,我们已重新设计通知,以便为管理通知行为和设置提供更轻松和更统一的 ...

  5. Android 5.0 行为变更

    Android 5.0 除了提供诸多新特性和功能外,还对系统和 API 行为做出了各种变更.本文重点介绍您应该了解并在开发应用时加以考虑的一些主要变更. 如果您之前发布过 Android 应用,请注意 ...

  6. Android 9.0 Http不能访问网络

    最近在做公司产品,一期完成,打包给测试,然后....一台手机连服务器都访问不了看日志如下: UnityWebRequest返回code:0,显示Unknow error 服务器接口是http://非域 ...

  7. Android 7.0新特性“Nougat”(牛轧糖)。

    1.Unicode 9支持和全新的emoji表情符号 Android Nougat将会支持Unicode 9,并且会新增大约70种emoji表情符号.这些表情符号大多数都是人形的,并且提供不同的肤色, ...

  8. Android 6.0(棉花糖)新特性

    1.支持4K显示 Android 6.0本身已经支持4K显示,会通过一定优化形式使4K内容更加清晰. 2. 启动验证 (更完整的应用权限管理) Android 6.0在开机时会自动运行验证代码,检测设 ...

  9. Android 7.0 PopupWindow 又引入新的问题,Google工程师也不够仔细么

    Android7.0 PopupWindow的兼容问题   Android7.0 中对 PopupWindow 这个常用的控件又做了一些改动,修复了以前遗留的一些问题的同时貌似又引入了一些问题,本文通 ...

随机推荐

  1. 数组的翻转(非reverse())

    方法一: var arr = [1,2,3,4]; var arr2 = []; while(arr.length) { var num = arr.pop(); //删除数组最后一个元素并返回被删除 ...

  2. 解决 weblogic poi3.9 报错 a different type with name "javax/xml/namespace/QName"

    解决 java.lang.LinkageError: loader constraint violation: loader (instance of weblogic/utils/classload ...

  3. JSON语言规范与Java中两种解析工具基本使用

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6652250.html  一:JSON语言规范 一言以蔽之:“一个 :一个键值对,一个{}一个对象,一个[]一个 ...

  4. ssh出错 sign_and_send_pubkey: signing failed: agent refused operation

    在服务器添加完公钥之后,ssh服务器然后报了这个错误 sign_and_send_pubkey: signing failed: agent refused operation 然后执行了以下命令才好 ...

  5. Linux修改系统主机名

    Linux修改系统主机名 一.查看主机名   [root@xqzt ~]# uname -n xqzt [root@xqzt ~]# hostname xqzt 二.修改hostname的四种方式? ...

  6. Java项目持续集成检查项

    1)   检查项:使用Super POM. 2)   检查项:GroupID应该以特定名称开头.3)   检查项:版本号符合规范.版本号必须是三段数字,之后加或不加-SNAPSHOT.4)   检查项 ...

  7. Xamarin.Android之ListView和Adapter

    一.前言 如今不管任何应用都能够看到列表的存在,而本章我们将学习如何使用Xamarin去实现它,以及如何使用适配器和自定义适配器(本文中的适配器的主要内容就是将原始的数据转换成了能够供列表控件显示的项 ...

  8. 十大经典排序算法-JS篇

    http://web.jobbole.com/87968/ 虽然是JS篇,但其他编程语言(例如java)实现起来是差不多的.

  9. Mac OS X上安装配置apache服务器

    说明:Mac在安装完成Mac系统的时候它已经自带了apache服务器,接下来就是配置和将它启动运行了.那么接下来要做的事情就是: 1.配置apache的配置文件 2.设置虚拟主机 启动并查看apach ...

  10. 如何解决input file 选取相同文件后,change事件不起作用解决方法

    两种方法 1.在你的input所属的form表单reset()就可以了! $("#avatorForm")[0].reset(); 2.设置你的input file value值为 ...