巨坑:嵌套Fragment,外层使用replace进行切换,造成内层Fragment被回收、显示空白

Jetpack Navigation返回Fragment页面刷新的坑?教你用hide/add替代replace解决 本文深入探讨了Jetpack Navigation中Fragment页面返回时重新加载的问题,提供了使用hide/add替代replace的解决方案。通过自定义FragmentNavigator和修改NavHostFragment,有效避免了Fragment的重复创建和性能损耗,提升用户体验。适用于Android开发中处理复杂导航场景的性能优化。 阅读详情

前言

         Fragment切换方法有两种:add和replace方式切换,其中add方法切换不会重新创建Fragment,而replace方式则会重新创建Fragment。

      这也就意味着replace方式在从Fragment_1切换到Fragment_2时,Fragment_1会执行onDestroy()和onDetach()方法。

      此时,如果Fragment_1中包含数个子subFragment,使用replace切换到Fragment_2,内层的subFragment会被回收,显示未空白,原有数据丢失。

 

问题描述

      在编写嵌套Fragment时,需要实现内层subFragment刷新,原来使用的是getFragmentManager()会报错:FragmentManager is already executing transactions 。但切换外层Fragment时,内层数据还在

     后按照网上使用getChildFragmentManager(),报错问题解决,出现外层切换,造成内层Fragment被回收、显示空白的问题

 

解决方法

    外层改用add、show、hide方法切换,问题解决。

    解决问题灵感和参考代码:android之fragment的两种使用方式(add和replace方式切换)

 

感悟

这次bug修了前后超过6小时,遇到问题,要从多个方向思考,多去尝试各种解决方法。

React Native路由本质:React Navigation原生导航接管指南 在移动跨端开发中,路由不再只是URL跳转的声明式抽象,而是对iOS UINavigationController和Android FragmentManager等原生导航生命周期的精确控制。React Navigation作为React Native官方唯一背书的导航方案,其核心价值在于将JavaScript指令可靠翻译为原生导航动作,并同步管理动画、状态与内存。理解这一原理,是解决手势返回卡顿、安全区域适配异常、Tab栈丢失等高频问题的前提。尤其当涉及safeareaprovider强制集成与stack/ 阅读详情

相关推荐

React Navigation v6 路由架构实战:Safe Area 适配与生产级导航设计

在 React Native 中,路由远非页面跳转的简单操作,而是需深度对齐 iOS UINavigationController 和 Android FragmentManager 的原生导航生命周期管理。其核心原理在于通过 JavaScript 模拟平台规范,结合 Context、自定义 Hook 与原生模块桥接实现声明式导航。技术价值体现在跨平台一致性、手势兼容性、深度链接支持及 Safe Area 动态适配能力。典型应用场景包括金融、政务、电商类 App 的 Tab+Stack 嵌套架构,尤其要求解

weixin_30905981的博客 316

Fragment被replace时重复加载数据的问题

Fragment被replace时,会重新走onCreateView()等生命周期,我们写的初始化数据的相关逻辑也会重走,并且重复添加,解决问题的办法有两个 ##第一种:在fragment中解决 private View view; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container,...

编码之路 1285

Vue3面试核心考点:响应式原理、组合式API与工程化实战解析

前端技术栈快速迭代,Vue3已成为主流框架。理解其响应式原理是掌握框架内功的关键,从Vue2的Object.defineProperty到Vue3的Proxy代理,不仅解决了新增属性、数组索引等检测难题,还通过懒代理提升了性能。组合式API中的setup、ref与reactive、computed与watch,以及组件通信、Vite构建、动态路由权限等工程化问题,更是面试与实战中的高频场景。从数据响应式到组件化设计,再到现代构建工具链,本文梳理了Vue3的底层机制与工程实践,将原理、考点与实际项目中的常见坑

weixin_31102231的博客 295

Android FrameLayout 嵌套 Fragment 时切换Fragment,出现Fragment中ViewPager的滑动卡顿

实现的效果图: 遇到的问题,之前往FrameLayout中添加Fragment是通过replace去添加的 getSupportFragmentManager().beginTransaction().addToBackStack(null).replace(R.id.framelayout, fragment).commit(); 但是出现了Fragment一切换就重新创建的问题,后...

baipenggui_bo 2074

jQuery认知重启:从API调用到JavaScript底层原理

jQuery不是独立语言,而是深度封装的JavaScript语法糖;其核心价值在于简化DOM操作、事件处理与AJAX交互,但真正决定代码健壮性与兼容性的,是原型链、闭包、事件循环、渲染管线等原生JavaScript机制。理解jQuery如何桥接选择器引擎(Sizzle)、包装器对象、事件委托与XMLHttpRequest封装,能显著提升老系统维护、跨框架迁移及性能优化能力。尤其在政府、金融等仍广泛使用jQuery 1.x的场景中,掌握其与原生JS的映射关系(如`.on()`对应事件冒泡控制、`.data()

世范水晶 500

Android AutoCompleteTextView 实战指南:从原理到中文拼音匹配

AutoCompleteTextView 是 Android 原生提供的智能输入补全控件,基于 EditText 扩展,内置 ListPopupWindow 与 Filter 机制,实现输入-过滤-展示-选择的闭环交互。其核心原理是通过 Adapter 提供数据源,由 Filter 在后台线程执行轻量级文本匹配(如 contains、startsWith),再安全发布结果至 UI 线程。技术价值在于零依赖、全 API 兼容(API 14+)、低内存占用与高可访问性,特别适合政务、医疗、物流等强稳定性要求场景

diaoju3333的博客 386

Android 由于系统回收了Activity导致的fragmentUI错乱或数据加载异常等问题的处理。

Android 由于系统回收了Activity导致的fragmentUI错乱或数据加载异常等问题的处理。 背景:近期厂商反馈的进程长时间在后台,再次进入主页会出现数据加载不出来的情况。 复现办法: 方法1. 进入开发者选项->不保留活动(用户离开后即销毁每个活动) 方法2. # 找到进程PID adb shell ps | grep your.app.package # 结果类似下面这样...

zsjlovesm521的博客 958

Thymeleaf核心原理与Spring Boot集成实战:从Web渲染到PDF生成

模板引擎是现代Web开发中分离视图与业务逻辑的核心组件,它通过预定义的语法将动态数据与静态模板结合,生成最终的HTML输出。其工作原理通常包括模板解析、数据绑定和渲染输出三个阶段。在Java生态中,Thymeleaf凭借其‘自然模板’设计哲学脱颖而出,它允许模板文件本身就是合法的HTML,可直接在浏览器预览,极大地优化了前后端协作流程。这一特性不仅提升了Web页面开发效率,更使其技术价值延伸至动态内容生成的广阔领域,例如合同、报表等格式化文档的自动化生产。结合Spring Boot的自动配置能力,Thyme

weixin_30876945的博客 849

经验解决Fragment被Replace后仍旧可见的问题

经验解决Fragment被Replace后仍旧可见的问题

qq_38472535的博客 274

Android美食推荐App毕业设计全解析:从架构到算法

推荐系统是移动应用提升用户体验的核心技术之一,通过对用户行为数据的挖掘与分析,实现内容的个性化分发。在美食领域,基于用户收藏、评分与浏览记录的兴趣建模,能够有效帮助用户发现喜爱的菜品。围绕Android平台上的美食推荐应用开发,从系统架构设计、SQLite数据库表结构、推荐算法实现,到Glide图片加载优化与协调布局交互,系统梳理了完整的技术方案。针对毕业设计场景,还提供了功能模块划分、代码实现示例以及常见问题排查方法,涵盖冷启动处理、Fragment状态恢复等关键细节,适合作为Android开发与推荐系统

weixin_30231327的博客 313

用AI免费制作30分钟电影:完整工作流与实操解析

AI视频生成技术正大幅降低影视创作门槛,但真正制作一部完整电影并非一键生成,而是涉及剧本、分镜、画面、配音、剪辑的复杂流水线。理解其基本原理,是将文本转化为连续视觉叙事的关键。对于创作者而言,掌握角色一致性控制、素材批量管理、免费额度合理分配等技术价值,能有效避免生成结果崩坏与资源浪费。该能力可广泛应用于短视频创作、独立电影预演、教学演示等场景。本文以30分钟AI电影制作为例,拆解从工具选择到成片输出的全流程,重点分析免费方案下的时间与积分成本,以及最容易翻车的环节,并给出基于实践验证的排查与优化策略。

weixin_29056865的博客 326

记录一下fragment切换不会被回收的方法

一般我们切换fragment都用replace方法实现,但是这样的做法是有缺点的,当你从这个fragment切换到另一个fragment 的时候当前的fragment会被系统回收掉,当你再次切换此fragment的时候就要重新加载数据了,这样子用户体验不好 public void startFragmentAdd(Fragment fragment) { FragmentManager fragmentManager = getSupportFragmentManager(); Frag

weixin_47884471的博客 1661

C# Socket网络通信UDP(关键字:Socket)

简单Socket-Udp通信 在本文中涉及到通信,仅做简单的通信(服务端接受消息,由客户端发出消息) 如有需要,根据需求可直接copy使用 关键字Socket 需要引用命名空间: using System.Net; using System.Net.Sockets; 服务端: using System; using System.Net; using System.Net.Sockets; u...

MelanceXin的博客 3886

两层Fragment嵌套,外层Fragment切换时内层Fragment不显示内容

前言 两层Fragment在某些情况下,内层Fragment会显示空白,这是一个比较常见的问题,百度到的一些帖子的方法有几种,但是在即的项目中,只有下面这种起了作用。最后附上在一篇帖子上看到的出现这种情况的原因(反正我看不懂)。 解法 Activity中使用replace切换: private void initFirstFragment() { course_fragm...

qq_17236921的博客 362

PX4算法解析:L1制导律

一、前沿 从今天开始,会陆续为大家解读开源飞控软件px4中使用到的各种算法,今天要讲述的是L1制导律,这是固定翼飞机进行路径跟踪的重要算法之一。这个算法是由MIT的研究人员提出,因为具有比较好的路径跟踪效果而得到广泛应用。在这之前,无人机在进行路径跟踪时一般采用基于侧偏距的PD控制器方法,至于为什么使用PD而不使用PID算法,那是因为位置环响应较慢,所以一般在外环采用PD算法,而在内环采用PID算...

weixin_44616080的博客 8254

OpenCV-Python图形图像处理:自用的一些工具函数源代码

本文为《OpenCV-Python图形图像处理:博主自用的一些工具函数功能及调用语法介绍》内容配套函数的源代码。

老猿Python 2494

fragment 嵌套Fragment,出现空白的问题

Fragment嵌套Fragment要用getChildFragmentManager。本来里面的fragment用的还是getFragmentManager,Fragment嵌套Fragment时,里面要用getChildFragmentManager。FragmentManager childFragmentManager = getChildFragmentManager(); ViewP

Sindyue的博客 2609

多图详解VSCode搭建Python开发环境

本文通过多图的方式详细介绍了VSCode搭建Python开发环境,希望能对学习Python的同学们有所帮助。 文章目录 1. VSCode的介绍和安装 2. 安装插件 2.1 安装中文插件 2.2 安装Python插件 2.3 安装远程插件 3. 远程连接服务器 3.1 配置ssh 3.2 运行代码 3.3 调试代码

weixin_43178406的博客 8万+

关于fragment间数据传递和相互切换的问题

最近写了一个小项目(仿写良仓),遇到了fragment数据传递和页面切换问题,纠结了好久,也百度不少,废话少说,先上图,看看界面 这是主界面看到这个,最基本的思路就是在一个activity里面嵌套着5个fragment,(商店,杂志,达人,分享,个人),每个fragment上面是一个标题栏,然后下面是一个Tablayout,下面则是一个Viewpager,因为又有5项,所以在这个viewpage

阿道夫的博客 2646

C#与天文观测:Celestia模拟星空的奇幻之旅

Celestia就像一艘穿梭在星海中的小飞船,带领我们遨游宇宙。C#则是这艘飞船的智能导航系统,用代码指挥它飞向任何我们向往的星球或星系。首先,下载并安装Celestia,熟悉其基本操作和功能。创建一个星空目标列表,包括不同的恒星、行星和星系。// 示例:定义观察目标列表new SpaceObject("太阳"),new SpaceObject("月球"),new SpaceObject("火星")

java专栏 1456

(十五)CX20106A 中超声波测量的应用

(十五)CX20106A 中超声波测量的应用

m0_52555663的博客 4511

Vue 完整版系统知识文档

《Vue全栈开发实战手册》摘要 本手册系统整合Vue2/Vue3全栈知识体系,涵盖基础语法、组件开发、状态管理、工程化等核心内容,适合从入门到精通的完整学习路径。主要特点: 基础核心 详解MVVM架构和响应式原理(Vue2的Object.defineProperty vs Vue3的Proxy) 完整模板语法规则与16种内置指令解析 组件系统核心:通信机制(8种方案)、插槽、动态组件、递归组件 进阶实战 状态管理:Vuex/Pinia完整解决方案 路由开发:动态路由、权限控制、懒加载 工程化:Webpack

专注 Java 后端开发,分享基础语法、JVM、并发、Spring 全家桶、微服务、分布式、性能优化等实战干货。坚持输出高质量技术笔记,用简单语言讲清复杂原理,助力每一位 Java 开发者稳步进阶。 401

扩散模型实战:从零开始训练手写数字生成模型

手写数字的数据集是绝大部分炼丹师的深度学习初恋,这篇博客以代码为主,手把手带读者搭建一个基于扩散模型的手写数字生成模型,非常适合刚接触扩散模型的初学者学习。

沉迷单车的追风少年 1913

Claude Code斜杠命令:AI编程协议与工程级重构原理

斜杠命令不是IDE快捷键,而是Claude Code与AI服务间轻量级通信协议,本质是绕过自然语言解析、直连AST分析与上下文感知执行引擎的技术接口。其核心原理在于基于文件类型指纹、编辑器状态快照和项目元数据的三重动态路由,实现命令的精准匹配与低延迟响应。技术价值体现在规避LLM语义猜测瓶颈、支持结构化约束输入、提供可验证的代码契约与工程级重构能力。典型应用场景包括自动化测试生成、语义级代码对比、安全敏感重构(如eval替代)、遗留系统渐进迁移及CI集成式AI Code Review。本文深入解析其底层协议

weixin_34099526的博客 418

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

RAG知识管道构建:从文档加载到答案溯源的5道工序

RAG(检索增强生成)是一种将外部知识库与大语言模型协同工作的关键技术,其核心在于构建可控、可追溯的信息输送管道,而非简单调用API。它依赖文档加载、语义切分、向量嵌入、精准检索和可信生成五大环节的深度协同。其中,文档加载需兼顾格式解析与元数据注入,文本切分须遵循语义断点而非机械分块,而答案溯源则要求输出可验证的证据链。这些环节共同决定了RAG系统的准确性、鲁棒性与工程可维护性,广泛应用于技术文档问答、企业知识库、合规咨询等对信息可靠性要求严苛的场景。

weixin_30243533的博客 363

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Mythos因果推理引擎:长程逻辑建模与门控释放实践指南

因果推理是大模型从‘回答问题’迈向‘承担决策责任’的关键能力跃迁,其核心在于构建可验证的逻辑图谱而非堆砌知识。Mythos代表了新一代长程因果建模技术,通过动态生成带置信度的有向无环因果图(DAG),显著提升多跳推理、跨文档一致性与隐含前提识别能力。该技术并非简单RAG增强,而是底层推理范式的迁移,在金融尽调、法律风险扫描、医疗诊断辅助等高可靠性场景中具备不可替代的技术价值。然而其输出存在可解释性衰减与幽灵边风险,需配套双轨验证、证据溯源与深度分层调用等工程化机制。本文聚焦Mythos的原理本质、门控释放逻

weixin_30251829的博客 453

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: Java 常用/好用 方法整理
下一篇: 用java实现大数据去重、词频统计、排序
脏比小念
博客等级 码龄10年 3粉丝 24原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值