Fragment学习基础

Fragment的设计哲学:

Fragment是从 Android 3.0开始引入的,主要用于大屏幕设备,如平板电脑。 以一个新闻应用在小屏和大屏设备上的设计来阐述Fragment的设计哲学。

对于小屏的手机设备,应该设计为新闻标题列表单独作为一个页面,点击新闻标题进入新闻详细内容页面。如下图所示:

上图就是两个Activity。

对于大屏的平板设备,应该设计为屏幕的左边是一个新闻标题列表,屏幕的右边部分可以用来显示新闻详细内容,点击左边的新闻标题,在右边显示对应的新闻内容。如下图所示:

对于这个大屏设备,就可以在一个Activity中来显示新闻标题列表和新闻详细内容两块区域,这两个区域就可以用Fragment,也即在一个Activity中放两个Fragment即可。

因为平板电脑屏幕较大,可以放置更多的UI组件,组件之间也会产生更多的交互,需要更加灵活的UI设计。而Fragment的出现,就是用于支持实现动态和灵活的UI设计。

Fragment基础:

1)Fragment是碎片、片段的意思。

2)Fragment是作为Activity界面组成的一部分。

3)Fragment有其自己的生命周期,但是Fragment的生命周期受其所在的Activity的生命周期的影响。

4)Fragment可以静态加载,也可以动态加载。

静态加载就是在Activity的布局文件中通过fragment标签来加载。

动态加载就是在程序中通过代码的方式来添加、移除、替换 Fragment。

5)Fragment有其自己的布局文件。

Fragment的生命周期:

onAttach()—>onCreate()—>onCreateView()—>onActivityCreated()—>onStart()—>onResume()—>onPause()—>onStop()—>onDestroyView()—>onDestroy()—>onDetach()

我们所说的Fragment一般都是android.app.Fragment。android.app.Fragment是Android 3.0才开始引入的,兼容的最低版本是 android:minSdkVersion=”11” 即Android 3.0版。

要与android.support.v4.app.Fragment区别开来。android.support.v4.app.Fragment兼容的最低版本是 android:minSdkVersion=”4” 即Android1.6版。

除了版本的区别外,还有以下区别:

1)如果使用的是android.app.Fragment,则继承自android.app.Activity的Activity的布局文件中可以直接使用< fragment >标签来静态加载Fragment。

但是如果是android.support.v4.app.Fragment,则必须是继承自android.support.v4.app.FragmentActivity的布局文件才能够直接使用< fragment >标签来静态加载Fragment,否则使用< fragment >标签会报错。

2)在Activity中获取Fragment的方法有所区别

android.app.Fragment在android.app.Activity中获取方法是:

getFragmentManager().findViewById( );

android.support.v4.app.Fragment在android.support.v4.app.FragmentActivity中的获取方法是:

getSupportFragmentManager().findViewById( );

时间: 2024-07-29 11:37:02

Fragment学习基础的相关文章

php学习基础-文件系统(一) 文件处理,文件权限

一.PHP系统文件处理 /* PHP文件系统处理 * 所有文件处理都是使用系统函数完成的. * 是基于Linux/Unix系统为模型 * * 文件系统处理的作用: * 1. 所有的项目离不开文件处理 * 2. 可以用文件长时间保存数据 * 3. 建立缓存, 服务器中文件操作 * * 文件处理 * 1. 文件类型 * 以Linux为模型的, 在Windows只能获取file, dir或unknow 三种类型 * 在Linux/Unix下, block, char, dir, fifo, file,

php学习基础-文件系统(二) 文件读写操作、文件资源处理

一.文件的打开与关闭 /* *读取文件中的内容 * file_get_contents(); //php5以上 * file() * readfile(); * * 不足:全部读取, 不能读取部分,也不能指定的区域 * * fopen() * fread() * fgetc() * fgets() * * * * * 写入文件 * file_put_contents("URL", "内容字符串"); //php5以上 * 如果文件不存在,则创建,并写入内容 * 如果

关于集成学习基础的简单描述

关于集成学习基础的简单描述 什么是集成学习? 集成建模是优化模型表现的一条重要途径.通常来说,将集成学习方法运用在你所构建的诸多模型之上是十分值得的,而同道中人们也一次又一次地证明着这一点.他们在诸如Kaggle之类的数据建模竞赛中往往会不约而同地采用集成学习,并且从中受益. 集成学习其实是一个很宽泛的概念,对于它的定义,可谓仁者见仁智者见智.接下来,本文将介绍一些集成建模的基本概念和思想,这些知识应该足以让你起步,从而去构建你自己的集成模型.同时,和往常一样,我们将尽量让它们看起来简单一些.

Yii学习——基础(1)

Yii采用MVC设计模式. Yii还引入了一个称作front-controller的东西,并命名为application. application封装了对用户请求的处理. application会收集用户的请求信息,并交予对应的控制器进一步处理. 这是一张交互流程图. 典型的Yii应用的工作流程 见图. index.php作为bootstrap脚本,创建了application并run它. 通过组件request,application获得用户请求的详细信息. 通过组件urlManager,ap

Python学习基础篇第一篇——快速入门(适合初学者)

一.Python学习基础篇第一篇--(快速入门) 建议从Python2.7开始学习,Python2.7可以支持扩展大量的第三方类库,是目前比较成熟的版本 编写代码的软件推荐将python自带的IDLE和PyCharm集成IDE结合起来使用 1.1 Python命令行 Python命令行将以 >>> 开始,比如 >>>print 'Hello World!' 对于验证简单的命令可以在python自带的IDLE中完成  1.2 在Python自带的IDLE写一段小程序 在所

VBA 开发学习--基础语法2

VBA中的运算符 算数运算符及其作用 + 求两个数的和 -  求两个数的差:求一个数的相反数 *  求两个数的积 /   求两个数的商(保留小数位   5/2=2.5) \   整除 (保留整数位  5\2=2) ^  指数运算(5^3=5*5*5=125) Mod  两数相除取余数  12 Mod 9=3 比较运算符 =   等于 <   小于 > 大于 <= 小于或等于 >= 大于或等于 <> 不等于 IS  比较两个对象的引用变量 Like   比较两个字符串是否

【IOS学习基础】NSObject.h学习

一.<NSObject>协议和代理模式 1.在NSObject.h头文件中,我们可以看到 // NSObject类是默认遵守<NSObject>协议的 @interface NSObject <NSObject> { Class isa OBJC_ISA_AVAILABILITY; } // 往上翻看到NSObject协议的声明@protocol NSObject/* 中间一大堆方法的声明*/@end 然后我就产生疑问了,为什么我们自己定义的协议是这样,后面加上了<

新手必看,Linux学习基础

Linux学习基础 1.什么是Linux? 准确的说,是指Linux的kernel(系统的核心程序),其内核版权属于Linus Torvalds,在GPL(GNU General Public License)版权协议下发行, 任何人都可以自由的复制(copy), 修改(change), 套装分发(distribute),销售,但是不可以在分发时加入任何限制, 而且所有原码必须是公开的,所以任何人都可以无偿取得所有执行文件和原代码. 对于Linux用户和系统管理员来说,Linux是指包含Linu

Ext学习-基础概念,核心思想介绍

1.目标   本阶段的目标是通过学习一些基础知识来对EXTJS有个整体的了解,知道EXTJS的基础语法,核心设计思想等等 2.内容   1.基础部分学习   2.EXTJS类系统介绍   3.EXTJSMVC结构介绍   4.EXTJS数据模型介绍 3.学习流程           1.在学习之前,首先要对javaScript的基础要有个基础了解,如果不熟悉,请参考:javaScript基础之闭包   2[可选]学习了解一下EXTJS的一些常用功能:http://ziren.org/extjs/