从零学Android(十)、Fragment基础知识

Fragment是Android中用于构建多窗格布局的组件,它可以嵌套在Activity中,有自己的生命周期和事件处理。Fragment的生命周期受宿主Activity影响,且可以独立操作。Fragment的常用生命周期方法包括onCreate(), onCreateView()和onPause()。可以通过直接在布局文件声明或在代码中添加到ViewGroup来创建和添加Fragment。执行Fragment事务时,可以使用FragmentTransaction进行添加、移除和替换,并通过addToBackStack()实现返回栈管理。" 7317262,1252329,银行开户系统实现,"['C语言', '银行系统', '数据结构', '用户界面', '程序设计']
摘要由CSDN通过智能技术生成

概述

一个Fragment代表着Activity中一种行为或者Activity用户界面中的一部分。我们可以将多个Fragment组合在一个Activity中,组成一个多窗格(multi-pane)布局;同样我们也可以在多个Activity中重复使用某个Fragment。我们可以将Fragment当作一个Activity中的小模块(它有它自己的生命周期,自己的事件处理机制),在Activity运行过程中,我们可以动态地添加或者移除这个模块。

Fragment在使用时,必须被嵌套在一个Activity中,我们可以称这个Activity为Fragment的“宿主Activity”,宿主Activity的生命周期直接影响到其中Fragment的生命周期。比如说:当宿主Activity进入暂停状态,其中所有的Fragment也会进入暂停状态,如果宿主Activity被销毁,其中包含的Fragment也会被销毁。然而,当宿主Activity正在运行,即处于resumed状态,我们可以独立地去操控某个Fragment,比如添加或者移除它。当我们执行一个Fragment事务的时候,我们可以将Fragment对象加入到宿主Activity管理的后台堆栈中,这个后台堆栈的每一个条目都是一次Fragment的事务记录。这个后台堆栈的作用是按下回退键时扭转Fragment事务的发生,即向后导航。

当我们将Fragment作为Activity的Layout布局的一部分加入到Activity中时,它会寄居在一个宿主Activity的View结构中的某个ViewGroup下,而且这个Fragment有自己的View布局。我们可以直接通过在Activity布局文件中使用<fragment>元素标签来声明插入Fragment到Activity中或者在代码中将它加入到一个ViewGroup下(所以,如果调用FragmentTransaction的add()方法,必须指定containerViewId,否则不会显示)。然而,Fragment并不需要一定作为Activity布局的一部分,我们有时可以使用一个没有UI且不可见的Fragment作为Activity的一个工人去帮Activity做一些事情。

Fragment是在Android 3.0(API 11)时提出来的,主要是用来让大屏设备(如:平板设备)的UI设计更加灵活和动态化。由于平板设备的屏幕空间远大于手持设备的屏幕空间,所以平板设备有更大的空间来组合控件和替换控件。Fragment不需要你去管理那些View结构的复杂变化 。通过将Activity的布局分割到Fragment中,我们可以在Activity的运行过程中,动态改变其UI并且将这种改变保存到Activity管理的一个栈中。

比如说:我们的应用中有一个文章列表和文章详情页面,由于平板设备空间大,列表Fragment和详情Fragment可以放在同一个页面中,而在手持设备上,则分为两个Activity作展示。如下图:


1. 创建一个Fragment

创建一个Fragment必须继承自Fragment类(或者它的某个子类,如果是API < 11的低版本,则继承V4包下的Fragment类)。Fragment的有些代码和Activity的看起来有点像。它包含了一些和Activity相似的回调方法,如:onCreate()onStart()onPause()onStop()。实际上,当你改变现有App结构去使用Fragment的时候,你甚至会发现,你只要将Activity的回调方法中的代码移动到Fragment中对应的回调方法中就行了。一般来说,创建的Fragment中,我们需要实现下面三个生命周期方法:

【1】onCreate()

这个回调方法在系统创建Fragment的时候被调用,一般在这个方法中去初始化一些组件。

【2】onCreateView()

这个回调方法在Fragment第一次绘制自己的用户界面时被调用。为了绘制UI界面,这个方法必须返回一个View对象,作为Fragment的布局结构的根布局,如果你不希望Fragment有UI界面,而只是单纯地帮Activity做一些事,你可以返回null。 

【3】onPause()

这个回调方法会在用户离开这个Fragment页面时被调用(虽然这个时候Fragment并没有被销毁)。

其它还有很多有关Fragment的生命周期方法会在后面的小节中学习。

下面是几个Fragment的常用子类,我们有时候会选择继承它们,而不是去继承Fragment:

【1】DialogFragment

它展示的是一个悬浮的对话框。在Activity中使用这个类去创建一个对话框,替代之前的对话框。因为你可以将Fragment加入Activity管理的栈中,当用户点击返回按钮,可以让Fragment消失掉。

【2】ListFragment

它就像

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值