7.1Android编程权威指南(第3版)————UI fragment与fragment管理器

本文介绍了Android中的Fragment,包括原生版本和支持库版本的区别,如何在应用中添加Fragment依赖,以及Fragment的生命周期和托管方式。重点讨论了创建UI Fragment的步骤和使用支持库版Fragment的优势,如方便升级、支持新特性等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

两类fragment
fragment是在API 11级系统版本中引入的,当时Google发布了第一台平板设备。可以说,UI设计要灵活,就是为了平板这样的大屏幕设备。现在,Google有两个版本的fragment实现可供选择:原生版本和支持库版本。
原生版本的fragment实现内置在设备系统中。如果应用要支持各个系统版本,在不同设备上运行的fragment可能会有不同的表现。(这主要是因为各个版本的维护有差异,例如,某个bug在4.4系统版本里已修正,而在4.0里却没有。)支持库版本的fragment在类库里,发布时,会打包在应用里。显然,使用支持库fragment的应用,无论在哪台设备上运行,都会有相同的表现。

使用fragment添加依赖
使用fragment需要在app的build.gradle中添加依赖

compile 'com.android.support:appcompat-v7:25.0.1'

fragment生命周期
在这里插入图片描述
许多方法对应着activity的生命周期方法。这种对应非常重要。因为fragment代表activity工作,所以它的状态应该反映activity的状态。
显然,fragment需要相对应的生命周期方法来处理activity的工作。
fragment生命周期与activity生命周期的一个关键区别就在于,fragment的生命周期方法由托管activity而不是操作系统调用。操作系统不关心activity用来管理视图的fragment。fragment的使用是activity内部的事情。

托管的两种方式
1、在activity布局中添加fragment;
2、在activity代码中添加fragment。
第一种方式就是使用布局fragment。这种方式简单但不够灵活。在activity布局中添加fragment,就等同于将fragment及其视图与activity的视图绑定在一起,并且在activity的生命周期过程中,无法替换fragment视图。
第二种方式比较复杂,但也是唯一可以动态控制fragment的方式。何时添加fragment以及随后可以完成何种具体任务由你自己定;也可以移除fragment,用其他fragment代替当前fragment,然后重新添加已移除的fragment。

创建UI framgnet
创建UI fragment的步骤与创建activity的步骤相同:
1、定义用户界面布局文件;
2、 创建fragment类并设置其视图为定义的布局;
3、 编写代码以实例化组件。

fragment与支持库
使用支持库版fragment,有两种方式:
1、使用,应用的activity继承AppCompatActivity
2、support-v4库里也有一个Activity子类,应用的activity继承FragmentActivity

为什么优先使用支持库版fragment
支持库版fragment使用最方便。任何时候,只要想升级支持
库版fragment的话,只需要下载升级包,重新编译发布一个新版本应用就行了。Google每年会多次更新支持库,并借此引入新特性、修复bug。要享受这些好处,升级应用的支持库版本就行了。
举个例子,Google自Android 4.2开始支持fragment嵌套使用(在fragment中托管fragment)。如果基于操作系统内置版fragment开发,并且面向Android 4.0及以上版本的设备,那么应用就无法
使用这个新特性了。假如用了支持库版fragment,就能轻松升级应用的支持库版本,享用fragment嵌套新特性(设备内存要足够大哦)。使用支持库版fragment没有显著的缺点。就功能实现来讲,它和操作系统内置版本没什么不同。非要挑毛病的话,那就是导入支持库包会占用额外空间。不过考虑到上述诸多优点,牺牲不到1M的空间并不算什么。
PS:非要用操作系统内置版fragment,也可以。要使用标准库里的fragment,需对项目做以下改动:
1、弃用FragmentActivity类,改用标准库中的Activity类(android.app.Activity)。它默认支持在API 11级或更高版本系统中使用fragment。
2、 弃用android.support.v4.app.Fragment类,改android.app.Fragment类。
3、 弃用getSupportFragmentManager() 方法, 改用getFragmentManager() 方法获取FragmentManager。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值