Android Fragment的学习笔记

Fragment是Android中一种灵活的组件,用于构建多窗格UI并可在不同Activity间重用。它拥有独立的生命周期,支持动态添加和移除,使得应用程序能更好地适应不同屏幕尺寸。

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

A Fragment represents a behavior or a portion of user interface in an Activity. You can combine multiple fragments in a single activity to build a multi-pane UI and reuse a fragment in multiple activities. You can think of a fragment as a modular section of an activity, which has its own lifecycle, receives its own input events, and which you can add or remove while the activity is running (sort of like a “sub activity” that you can reuse in different activities).

上面是谷歌官方对于Fragment的介绍。主要说明了Fragment和Activity之间的关系,谷歌官方推出Fragment是希望它能在在一些特定的场合替代Activity。它比Activity更灵活,可以作为Activity的一个模块,同时可以被多个Activity重用,最重要的是:Fragment有自己独立的生命周期,接受自身的事件输入。同时,可以在Activity运行期间添加或移除。

应当理解fragment的优势:灵活。因此一些内容时常会变化的场景下,比如照片的浏览。
同时需要注意的是Fragment必须嵌入到一个Activity当中,而且Activity的生命周期会直接影响到Fragment的生命周期。Activity被销毁的同时,Fragment也会被销毁,只有在Activity处于Running状态Fragment才能执行添加或移除操作。
Fragment可以被添加进管理Activity的堆栈当中,会记录下Fragment当中发生的事务。这个堆栈允许用户通过back键,改变Fragment的事务。这一点是很重要,这样我们可以用Fragment代替几乎所有的Activity。
Fragment可以作为Activity布局中的一个模块,在ViewGroup的内部视图层,Fragment可以定义自己的布局文件。通过<fragment>字段声明。也可以通过代码添加到ViewGroup当中。甚至,fragment可以不作为layout的一部分,可以没有UI作为一个不可见的活动。

Design Philosophy

Android introduced fragments in Android 3.0 (API level 11), primarily to support more dynamic and flexible UI designs on large screens, such as tablets.

安卓主要是为了针对大屏设备而推出的fragment,以便支持更多动态的灵活的UI设计。
同样的fragment组件在平板和手机可以又不一样的布局
如上图所示:相同的fragment组件在屏幕尺寸不一样的设备上可以有不同的展示,这样便于开发者开发适用各种设备的应用。

Creating a Fragment

创建一个fragment必须继承fragment(或者已有的子类)。fragment的代码和Activity的代码很相似,有很多的相同的生命周期函数。
fragment的生命周期
通常情况下我们只用重写fragment的如下方法:

onCreate()
系统在创建fragment的时候会调用这个方法,我们应当在该方法当中实现基本组件的初始化,这些基本组件在fragment暂停或停止的时候能够保存,当fragment resume的时候能够重现。

onCreateView()
系统会在fragment第一次绘制UI的时候调用该方法。该方法必须返回一个View,这个View应当是fragment的layout。如果fragment不提供任何UI,可以返回null。

onPause()
系统调用该方法,表示用户将要离开这个fragment(这并不意味着fragment会被销毁)。通常我们会在这里提交一些需要被持久化的参数(因为,用户可能不会再进入该fragment)。

大部分应用至少会重写这三个方法,还有一些别的回调方法可以用来处理fragment的各个生命周期。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值