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://idctop.com/article/487723.html

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

相关推荐

  • 我国AI大模型排行谁最强?2026最新大模型排名

    截至2026年,国内AI大模型第一梯队主要由百度文心一言、阿里通义千问、华为盘古及智谱AI等头部玩家占据,选择时需根据具体应用场景如代码生成、长文本处理或企业私有化部署来匹配最合适的模型,随着人工智能从概念走向深度落地,大模型不再仅仅是科技巨头的炫技工具,而是成为了企业数字化转型的核心基础设施,对于普通用户和企……

    2026年6月14日
    2800
  • 分布式日志监控系统怎么搭建?企业级分布式日志监控方案

    分布式日志监控系统通过集中采集、实时传输与统一存储,解决了微服务架构下日志分散、排查困难的痛点,是保障系统稳定性的核心基础设施,在微服务和容器化部署成为常态的今天,传统的单机日志查看方式已经彻底失效,当你的应用拆分成几十甚至上百个服务,日志散落在不同的服务器、不同的容器里,一旦出现故障,就像在几千个抽屉里找一根……

    2026年7月8日
    13100
  • 全球AI大模型排名哪家强?2026最新AI大模型排行榜

    截至2026年,全球AI大模型综合排名第一梯队主要由OpenAI的GPT-4o、Anthropic的Claude 3.5 Sonnet以及Google的Gemini 2.0 Ultra构成,具体选择需根据对多模态能力、代码生成精度或隐私合规性的不同侧重进行匹配,2026年全球主流大模型格局深度解析在人工智能技术……

    2026年6月13日
    3100
  • AI大模型和AI人工智能大模型的区别是什么?大模型有哪些应用场景

    AI大模型是技术底座,而AI人工智能大模型是包含数据、算力、算法及应用层的全栈生态系统,前者是“引擎”,后者是“整车”,很多人听到这两个词,第一反应是它们是不是同一个东西的不同叫法,其实不然,如果把人工智能比作一家餐厅,AI大模型就是那套核心的烹饪技术和配方,而AI人工智能大模型则是包含了食材供应链、厨房设备……

    2026年6月15日
    2800
  • 分布式系统模型深度学习是什么?深度学习在分布式系统中的应用

    分布式系统模型深度学习的核心在于将大规模集群的计算资源与AI算法的动态调度相结合,通过实时感知网络负载与硬件状态,实现算力的高效分配与故障自愈,从而在降低运维成本的同时显著提升系统稳定性,传统分布式架构往往面临“静态配置”与“动态需求”之间的天然矛盾,当流量洪峰突至,固定规则难以快速响应;而当资源闲置时,又会造……

    2026年7月7日
    2000
  • 分布式缓存服务哪家品牌好?国内主流分布式缓存服务对比

    在2026年的技术语境下,没有绝对“最好”的品牌,只有最匹配业务场景的选择:追求极致性能与云原生集成选阿里云Redis或AWS ElastiCache,重视数据一致性与高可用架构选腾讯云Tendis或华为云DCS,而需要私有化部署且对合规性有严苛要求的金融政企场景,则应优先考虑自建Redis Cluster或开……

    2026年7月12日
    16700
  • 分布式缓存服务三强谁最好?主流分布式缓存服务对比

    在分布式缓存领域,通常所说的“三强”指的是目前市场占有率最高、技术最成熟且应用最广泛的三款主流缓存产品,它们分别是:RedisMemcachedHazelcast(或在企业级云原生场景中,AWS ElastiCache / 阿里云 Redis 等托管服务也常被提及,但若论开源核心引擎,Hazelcast 是重要……

    2026年7月9日
    5300
  • 大模型QLoRA微调实战教程难吗?大模型微调需要多少显存

    通过QLoRA技术,你可以在消费级显卡上以极低的显存占用完成大模型微调,实现从“通用聊天”到“垂直领域专家”的平滑过渡,且成本仅为全量微调的十分之一左右,大语言模型(LLM)的爆发式增长让企业和个人开发者面临一个共同难题:通用模型懂很多,但不懂你的业务,全量微调需要昂贵的A100集群,而直接调用API又难以保护……

    2026年6月17日
    2000
  • 什么是服务器客户端架构?服务器与客户端架构详解

    服务器与客户端的架构本质是“请求-响应”的协作模式,前者负责处理数据与逻辑,后者负责展示与交互,二者通过标准化的网络协议连接,共同构成现代互联网应用的基石,想象一下,你正在一家繁忙的餐厅用餐,客户端就是你手中的菜单和餐桌,负责展示菜品(界面)并记录你的点单(输入);服务器则是后厨,负责接收订单、烹饪食物(处理逻……

    2026年7月4日
    10910
  • 深潜ai大模型到底有什么功能?

    深潜AI大模型并非单一软件,而是指代一类具备深度逻辑推理、长上下文理解及复杂任务规划能力的下一代人工智能底层技术架构,其核心价值在于将AI从“内容生成工具”升级为“自主决策代理”,在2026年的数字生态中,普通用户与开发者对AI的认知已发生根本性转变,大家不再满足于简单的问答或图片生成,而是希望AI能像资深员工……

    2026年6月14日
    2400

发表回复

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