Fragments怎么使用才正确,Android Fragment生命周期如何管理?

Android Fragments 详解指南

Fragment(碎片) 是 Android 开发中的一个核心组件,它可以被视为 Activity 界面中的一个“模块化部分”,Fragment 具有自己的生命周期,并且可以被添加到 Activity 中,也可以从其中移除。

为什么需要 Fragment?

Fragment 的引入主要是为了解决屏幕适配界面复用的问题:

Android零基础入门到精通之Fragment的使用方法
加载中
Android零基础入门到精通之Fragment的使用方法
  • 多面板布局:在平板电脑等大屏设备上,可以在一个界面显示两个 Fragment(如左侧列表,右侧详情);而在手机上则将它们分为两个独立的 Activity。
  • 模块化开发:将复杂的界面拆分成多个独立的部分,提高代码的可维护性和可复用性。
  • 动态界面管理:可以在运行时动态地添加、删除或替换界面内容,而无需重启整个 Activity。

Fragment 的生命周期

Fragment 的生命周期与 Activity 紧密相关,但它有自己的特有状态,重点关注以下阶段:

  • onAttach()

    Fragments怎么使用才正确,Android Fragment生命周期如何管理?

    :Fragment 与 Activity 建立关联。

  • onCreate():初始化 Fragment(不涉及 UI)。
  • onCreateView()关键步骤,在此方法中加载 XML 布局并返回 View 实例。
  • onViewCreated():View 创建完成后调用,适合在此进行 findViewById 或设置监听器。
  • onPause() / onStop():用户离开 Fragment 时调用。
  • onDestroyView():Fragment 的视图被销毁,但 Fragment 实例仍然存在。
  • onDetach():Fragment 与 Activity 完全脱离。

如何使用 Fragment

1 静态添加(通过 XML)

直接在 Activity 的布局文件中使用 <fragment>FragmentContainerView 标签,这种方式在编译时就确定了,无法在运行时动态更改。

2 动态添加(通过代码)

这是最常用的方式,通过 FragmentManagerFragmentTransaction 来实现。

  • 核心步骤
    1. 在布局中定义一个容器(如

      Fragments怎么使用才正确,Android Fragment生命周期如何管理?

      FrameLayout)。

    2. 获取 supportFragmentManager
    3. 开启事务 beginTransaction()
    4. 调用 replace()add()
    5. 调用 commit() 提交更改。

代码示例:

val fragment = HomeFragment()
supportFragmentManager.beginTransaction()
    .replace(R.id.fragment_container, fragment)
    .addToBackStack(null) // 将操作添加到返回栈,点击返回键可回退
    .commit()

Fragment 之间的通信

Fragment 不应该直接互相调用,因为这会造成强耦合,推荐以下三种通信方式:

  • ViewModel (推荐):使用 Activity 范围的 ViewModel,两个 Fragment 共享同一个 ViewModel 实例,通过 LiveDataStateFlow 观察数据变化。
  • Fragment Result API:适用于简单的单向数据传递,使用 setFragmentResult 发送结果,setFragmentResultListener

    Fragments怎么使用才正确,Android Fragment生命周期如何管理?

    接收结果。

  • 接口回调 (传统方式):Fragment 定义一个接口,由 Activity 实现该接口,再通过接口将数据传递给另一个 Fragment。

最佳实践与注意事项

  • 使用 FragmentContainerView:相比于 FrameLayoutFragmentContainerView 能够更好地处理 Fragment 的生命周期和动画。
  • 避免在 Fragment 中持有 View 的强引用:在 onDestroyView() 中将 View 绑定(如 Binding 类)置为 null,防止内存泄漏。
  • 优先使用 Navigation 组件:对于复杂的页面跳转,建议使用 Jetpack Navigation 库,它将 Fragment 的跳转逻辑可视化,并简化了 FragmentManager 的操作。
  • 区分 add() 和 replace()
    • add():将新 Fragment 叠加在旧 Fragment 之上,旧的仍处于 RESUMED 状态。
    • replace():先移除旧的,再添加新的,旧的会执行 onDestroyView

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://test.idctop.com/article/487723.html

(0)
服务器发送给客户端的线程休眠怎么实现,Socket通信线程休眠怎么写?
上一篇 2026年7月12日 16:26
如何查找Linux Shell CHM手册,Linux怎么打开chm文件?
下一篇 2026年7月12日 16:27

相关推荐

  • 福州网站建设案例有哪些?福州网站建设公司哪家好

    福州网站建设并非简单的代码堆砌,而是基于本地商业生态、百度SEO算法逻辑及用户体验设计的系统性工程,成功的关键在于精准匹配福州企业的行业属性与移动端的搜索习惯,在数字化浪潮席卷而来的今天,福州的企业老板们往往面临一个尴尬的局面:网站做了,但百度搜不到;页面美了,但客户留不下,这不仅仅是技术问题,更是策略错位,对……

    2026年7月3日
    8100
  • FlinkSQL SPLIT_INDEX函数如何优化,有何方法

    在Flink SQL中,SPLIT_INDEX函数(或类似字符串分割后取索引元素的操作)性能优化关键在于避免频繁调用,改用预分割、JSON路径提取或内置函数替代,可大幅减少CPU与内存开销,为什么你的Flink SQL SPLIT_INDEX越跑越慢SPLIT_INDEX函数的内部实现与开销Flink SQL本……

    2026年8月21日
    300
  • 分布式缓存服务到底怎么样?分布式缓存服务有哪些优缺点

    分布式缓存服务(Distributed Cache Service)是现代软件架构中至关重要的一环,尤其是在高并发、低延迟的场景下,它是在多台服务器之间共享的内存数据库,用于存储频繁访问的数据,从而减轻后端数据库(如 MySQL、PostgreSQL)的压力,要评价“怎么样”,我们需要从优势、挑战、适用场景以及……

    2026年7月12日
    16000
  • 大模型LoRA微调支持哪些模型?支持哪些大语言模型

    大模型LoRA微调目前主要支持基于Transformer架构的主流开源模型,包括Llama系列、Qwen系列、Baichuan系列、ChatGLM系列以及Stable Diffusion等视觉生成模型,其核心原理是通过冻结预训练权重,仅训练少量低秩适配参数,从而实现高效、低成本的专业领域定制,在2026年的AI……

    2026年6月17日
    3000
  • 佛山静态虚拟主机怎么选择?佛山虚拟主机租用价格

    佛山静态虚拟主机适合预算有限、流量稳定且追求极致加载速度的企业官网,其核心优势在于成本低廉与访问极速,但需警惕高并发下的稳定性瓶颈,在数字化营销的浪潮中,网站不仅是展示窗口,更是转化引擎,对于身处佛山这座制造业与商贸重镇的中小企业而言,选择合适的主机方案直接决定了首屏加载速度与用户留存率,静态虚拟主机因其结构简……

    2026年7月4日
    15800
  • 大模型刷榜真的严重吗?大模型刷榜怎么解决

    大模型的刷榜问题确实严重,它正在扭曲技术评价标准,导致“高分低能”现象频发,用户需警惕榜单背后的数据污染,刷榜乱象:被算法裹挟的“虚假繁荣”当我们打开各大技术评测网站,看到某个大模型在基准测试中独占鳌头时,第一反应往往是惊叹,这种惊叹背后可能隐藏着精心设计的“作弊”链条,刷榜并非简单的数据造假,而是一种针对评测……

    2026年6月21日
    1900
  • 分布式管理系统是什么?分布式管理系统有哪些核心功能

    分布式管理系统通过解耦架构实现高可用与弹性伸缩,是应对海量数据与高并发场景的核心基础设施,而非简单的服务器堆砌,想象一下,如果你把整个公司的运营数据都锁在一个保险柜里,一旦钥匙丢了或者保险柜坏了,整个公司就瘫痪了,分布式管理系统就是那个拥有无数个小保险柜、并且能自动备份、自动切换的超级管家,它不再依赖单一节点的……

    2026年7月9日
    15100
  • 哪6大AI大模型公司最强?国内AI大模型公司排名

    2026年AI大模型赛道已步入成熟期,百度、阿里、腾讯、华为、科大讯飞及智谱AI这六大巨头凭借各自的技术壁垒与生态优势,共同构成了中国人工智能的核心基础设施,企业在选型时需根据具体业务场景而非单纯追求参数规模,六大AI大模型公司核心版图解析在2026年的市场格局中,头部企业的竞争焦点已从单纯的“基座模型”参数竞……

    2026年6月15日
    2310
  • instanceof为什么要尽可能使用接口?,接口有什么好处

    在Java开发中,当使用instanceof进行类型检查时,应优先判断接口类型而非具体实现类,这是降低耦合、提升扩展性的核心实践,也是面向接口编程的直接体现,instanceof使用接口的典型场景在业务逻辑中,经常需要判断对象是否属于某个特定类型,如果直接使用具体类,代码会与实现细节紧密绑定,导致每次增加新实现……

    2026年8月13日
    400
  • flash茶叶网站怎么做?flash动画制作教程

    Flash茶叶网站的核心价值在于通过极速加载与沉浸式交互体验,解决传统电商页面加载慢、展示僵化的痛点,从而显著提升用户停留时长与转化率,在移动互联网流量红利见顶的当下,茶叶作为高客单价、重体验的非标品,其线上销售面临着巨大的信任构建难题,传统的静态图文页面往往因为加载缓慢、交互单一,导致用户刚产生兴趣便因等待而……

    2026年7月11日
    3700

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注