目录(?)[-]

  1. 为何引入Fragment
    1. 大小屏幕的适配
    2. 横屏竖屏切换
    3. 返回键
  2. 什么是Fragment

为何引入Fragment

我们之前的Activity都是都是全屏处理较为简单的单一事务功能,适合于屏幕尺寸较小的智能手机,但是对于平板,有更大的显示空间,运行用户在上面处理更多的功能,例如屏幕左边是email列表,右边的某email的内容。于是在Android 3.0引入了fragment。Fragment不仅可用于平板,同样也可用于手机尺寸。

大小屏幕的适配

某种意义上Fragment是屏幕中的一个子activity,但是在一个屏幕显示多个activity会造成概念和逻辑的混乱,所以引入fragment的概念,可以理解为屏幕中的一块UI,可作为activity的一部分。Fragment是view的容器,加载layout,处理一小部分屏幕,它是activity的一部分。Fragment提供的UI和代码的重用,例如,在大屏幕设备中,显示左右两个fragment或者上下两个fragment(具体看orientation),在小屏幕设备中则显示其中一个fragment。

使用fragment,将很容易处理这种情况,activity只需要对fragment进行布局,具体的view的摆放和操作,由fragment进行处理。

横屏、竖屏切换

当屏幕进行横屏/竖屏的切换(模拟器转向可以简单按数字小键盘的“7”),activity会退出,从代码中看调用了onDestroy(),重新加载activity(调用了onCreate()),我们需要对原有状态保存,以便切换屏幕后,用户能继续操作,而不是重头开始。保存数据或状态会比较麻烦,可以用fragment来解决。

返回键

按返回键,activity同样也会调用onDestroy()退出。如果在应用中,再次进入该activity,有时也会希望在上次基础上继续执行,同样也存在状态保持的问题。fragment中,按返回键,根据fragment stack进行回退,仍然留在当前的activity中。

什么是Fragment

Activity是Context的继承,而fragment是Object的继承,在android.app包中。fragment可具有层次结构的view(来自xml或者代码)。Fragment有一个bundle可以存贮数据,和activity类似,在创建时进行初始化调用,此外还有一个bundle用于保存现有状态,在onCreate(),onInflate(),onCreateView() 和onActivityCreated()都指向该对象。

一个activity可以显示多个fragment,如果fragment A被fragment B替代,则fragment A会被放入back stack中,用户按返回键时,可以重新显示fragment A。

一个fragment具有一个tag和一个ID,可用于索引

fragment的生命周期如下。这个图先放在这里,以后结合小例子理解。

相关链接: 我的Android开发相关文章

【转】Pro Android学习笔记(三六):Fragment(1):基本概念的更多相关文章

  1. 【转】 Pro Android学习笔记(四二):Fragment(7):切换效果

    目录(?)[-] 利用setTransition 利用setCustomAnimations 通过ObjectAnimator自定义动态效果 程序代码的编写 利用fragment transactio ...

  2. 【转】 Pro Android学习笔记(四十):Fragment(5):适应不同屏幕或排版

    目录(?)[-] 设置横排和竖排的不同排版风格 改写代码 对于fragment,经常涉及不同屏幕尺寸和不同的排版风格.我们在基础小例子上做一下改动,在横排的时候,仍是现实左右两个fragment,在竖 ...

  3. 【转】 Pro Android学习笔记(五六):配置变化

    目录(?)[-] Activity的destorycreate过程 Fragment的destorycreate过程 onSaveInstanceState saveFragmentInstanceS ...

  4. Pro Android学习笔记 ActionBar(1):Home图标区

     Pro Android学习笔记(四八):ActionBar(1):Home图标区 2013年03月10日 ⁄ 综合 ⁄ 共 3256字 ⁄ 字号 小 中 大 ⁄ 评论关闭 ActionBar在A ...

  5. 【转】 Pro Android学习笔记(八二):了解Package(1):包和进程

    文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ 在之前,我们已经学习了如何签发apk,见P ...

  6. 【转】 Pro Android学习笔记(六七):HTTP服务(1):HTTP GET

    目录(?)[-] HTTP GET小例子 简单小例子 出现异常NetworkOnMainThreadException 通过StrictMode进行处理 URL带键值对 Andriod应用可利用ser ...

  7. 【转】 Pro Android学习笔记(五五):调试和分析(3):adb命令、模拟器控制台和StrictMode

    目录(?)[-] adb命令 模拟器Console StrictMode adb命令 我们在学习SQLite的使用,介绍过部分adb命令的使用,见Pro Android学习笔记(五):了解Conten ...

  8. 【转】 Pro Android学习笔记(五二):ActionBar(5):list模式

    可以在action bar中加入spinner的下来菜单,有关spinner,可以参考Pro Android学习笔记(二十):用户界面和控制(8):GridView和Spinner. list的样式和 ...

  9. 【转】 Pro Android学习笔记(三五):Menu(6):XML方式 & PopUp菜单

    目录(?)[-] 利用XML创建菜单 XML的有关属性 onClick事件 Pop-up菜单 利用XML创建菜单 在代码中对每个菜单项进行设置,繁琐且修改不灵活,不能适配多国语言的要求,可以利用资源进 ...

  10. 【转】 Pro Android学习笔记(三三):Menu(4):Alternative菜单

    目录(?)[-] 什么是Alternative menu替代菜单 小例子说明 Alternative menu代码 关于Category和规范代码写法 关于flags 多个匹配的itemId等参数 什 ...

随机推荐

  1. Linux系统监控的几个命令

    uptime 系统时间.运行时间.连接数(没一个终端算一个连接).在1,5,15分钟内系统负载 uname -a    查看系统所有相关信息 -r     查看系统内核版本 -s    查看系统内核名 ...

  2. Openstack 架构简述

    概述 在学习OpenStack的过程中,感觉对整个OpenStack的架构稍稍有些了解,所以将这些记录下来,一来防止自己忘记,二来也可以对有需要的人提供帮助 本文章相关的灵感/说明/图片来自于http ...

  3. 项目中nodejs包高效升级插件npm-check-updates

    nodejs包高效升级插件npm-check-updates 最近想升级npm的包 1.//常规的包升级方式/2.npm update (包) 到npm一搜发现了一个很好的升级工具 npm-check ...

  4. 导入android sdk samples工程报错"did you mean to use @+id instead of @+android:id?"

    导入“D:\adt-bundle-windows-x86_64-20140702\sdk\samples\android-15”中的工程报错 did you mean to use @+id inst ...

  5. Elasticsearch使用记录

    Elasticsearch使用记录 Elasticsearch的搭建方法 1.RPM方式搭建 首先去官网[https://www.elastic.co/downloads/elasticsearch# ...

  6. Swift 闭包的简单学习

    OC中已经学习了闭包 在swift里面 该怎么处理 不多说 上代码 //(num:Int) ->Bool是闭包的参数类型 func hasCloserMatch(arr :[Int], valu ...

  7. Spring Cloud之Swagger集群搭建

    在微服务中,Swagger是每个服务 比如会员服务,订单服务,支付服务 进行继承. 如何将整个微服务中的Swagger进行合成,同一台服务器上. 使用Zuul+Swagger实现管理整个微服务API文 ...

  8. Delphi中 为DBNavigator的按钮加中文

    Delphi中 为DBNavigator的按钮加中文 /*Delphi中数据库控件DBNavigator使用起来不错,但是按钮上“+”.“-”等含义对于中国的用户不习惯,甚至不知道是什么含义.改成相应 ...

  9. 图文了解 Kafka 的副本复制机制

    让分布式系统的操作变得简单,在某种程度上是一种艺术,通常这种实现都是从大量的实践中总结得到的.Apache Kafka 的受欢迎程度在很大程度上归功于其设计和操作简单性.随着社区添加更多功能,开发者们 ...

  10. Codeforces Round #260 (Div. 2) A , B , C 标记,找规律 , dp

    A. Laptops time limit per test 1 second memory limit per test 256 megabytes input standard input out ...