FragmentManager is already executing transactions

news2024/12/27 0:05:49
本文解决问题:

java.lang.IllegalStateException: FragmentManager is already executing transactions

问题背景描述:

在Fragment中 用tablayout+viewpager+fragment,即Fragment嵌套Fragment场景、或者ViewPager2嵌套ViewPager2时。

执行生命周期返回、或使用了JetPack Navigation NavController.navigateUp(),FragmentManager 栈进行出栈管理错误,就会报上述问题。

问题可能原因:

在fragment里面viewpager的setadapter的时候使用的是getActivity().getSupportFragmentManager,这时候会和父activity相冲突,应该为:getChildFragmentManager。比如:

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {

super.onViewCreated(view, savedInstanceState)
            //错误用法,使用的是getActivity().getSupportFragmentManager,会和父activity相冲突
mBinding.tabLayout.attachToViewPager(
             mBinding.viewPager, titleList, fragmentList, parentFragmentManager, lifecycle)
            
            //正确用法
mBinding.tabLayout.attachToViewPager(
              mBinding.viewPager, titleList, fragmentList, childFragmentManager, lifecycle)
    }

在Activity初始化FragmentTabHost的时候,传入了一个fragmentmanager,就是getFragmentManager拿到的,因为tabhost要交互的是第一层的fragment ,是直接和activity相交互的。
而在HomeFragment里嵌套的ViewPager ,因为要交互的是嵌套的Fragment,所以需要拿到ChildFragmentManager才行。

解决方法:

HomeFragment由Activity的FragmentManager 控制,在一级嵌套中要使用getParentFragmentManager()控制。
在第二层HomeFragment中要用getChildFragmentManager() 控制ViewPager中的Fragment。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1045506.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】之Centos7卸载KVM虚拟化服务

👨‍🎓博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…

​从零开始:集成视频直播美颜SDK到直播平台的步骤

当下,实时美颜技术在直播、社交领域中扮演了关键的角色,帮助主播增强自信,吸引更多观众。本文将指导您从零开始,逐步了解如何将视频直播美颜SDK集成到您的直播平台中。 第一步:选择适用的美颜SDK 在集成美颜功能之前…

什么是OSPF?为什么需要OSPF

【微|信|公|众|号:厦门微思网络】 【微思网络www.xmws.cn,成立于2002年,专业培训21年,思科、华为、红帽、ORACLE、VMware等厂商认证及考试,以及其他认证PMP、CISP、ITIL等】 什么是OSPF? 开放式最短路径优…

适合企业的跨隔离网文件摆渡的四种方式及优缺点

在当今的信息化时代,数据是企业的重要资产,如何有效地管理和传输数据,尤其是跨隔离网的大文件数据,是企业面临的一个挑战。跨隔离网文件摆渡是指在不同安全等级或网络环境的计算机之间传输文件的过程。 目前,市场上常见…

修改Jenkins主目录

Windows系统上安装了Jenkins后,默认数据目录,也就是工作区目录,即:每次构建的项目数据文件所在目录为: 随着构建项目的增多,一直用这个目录,C盘东西越来越多,电脑就会越来越卡&#…

Firefox 开发团队对 Vue 3 进行优化效果显著

Mozilla 官方博客近日发表文章《Faster Vue.js Execution in Firefox》,介绍了 Firefox 开发团队对 Vue 3 进行的优化。 文章写道,在使用 Speedometer 3 对 Firefox 进行基准测试时,他们发现 Vue.js test 的测试结果从 Vue 2 升级到 Vue 3 后…

第九章 动态规划 part11 123. 买卖股票的最佳时机III 188. 买卖股票的最佳时机IV

第五十天| 第九章 动态规划 part11 123. 买卖股票的最佳时机III 188. 买卖股票的最佳时机IV 一、123. 买卖股票的最佳时机III(难难难难难) 题目链接:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iii/ 题目介绍&#xff…

如何将 Python 运用到实际的测试工作中

1、自动化测试脚本编写: Python广泛用于编写自动化测试脚本,以执行各种测试任务。可以使用Selenium、Appium或PyTest等库来辅助测试脚本的编写。 下面是一个示例: from selenium import webdriver import unittestclass LoginTest(unittes…

每个测试人都会遇到的批量安装,你真的会操作吗?

♥ 前 言 能不能通过脚本来实现多台设备同时安装 App? 实现过程 核心技术解决方案: adb 命令 多进程/多线程 采用的脚本语言: Java、Python、Shell、bat 都可 因为 Shell 与 bat 直接可以与 adb 命令交互,效率更高&#…

分布式并行训练(DP、DDP、DeepSpeed)

[pytorch distributed] 01 nn.DataParallel 数据并行初步 数据并行 vs. 模型并行 数据并行:模型拷贝(per device),数据 split/chunk(对batch切分) 每个device上都拷贝一份完整模型,每个device分…

Android实现二维码扫描功能(一)ZXing插件接入

简介 关于Android扫描二维码的功能实现,网上有很多相关资料。在对比之后,选用了前辈了修改过的ZXing直接接入到项目中,特制作此demo,介绍整个过程。 (最新更新)本篇文章讲解的接入方法对部分开发者新人来说…

Molecular Cancer|CDK9抑制诱导表观遗传重编程,揭示了规避淋巴瘤耐药性的策略

细胞周期蛋白依赖性激酶(CDK)蛋白家族在细胞周期进程(如CDK1/2/4/6)和RNA转录(如CDK7/8/9/11)的调控中起着不可或缺的作用。由于染色体区域易位或基因扩增导致的CDKs表达失调与肿瘤发生有关。在淋巴瘤细胞中…

无线通信——Mesh自组网的多跳性

Mesh的多跳性 Mesh网络具备多跳性。什么是多跳性呢?上面说过,每一个具备Mesh网络的设备都是独立的节点。因此,当我发出一条数据时,这些数据会通过跳跃到达不同的网络节点,数据从一个节点跳到另一个节点,直到…

使用烧瓶的简单电子商务API

一、说明 让我们试一试烧瓶(Flask)这个模型框架,这个应用程序可让您管理和扩展您的云端业务;它允许管理人员浏览和计算商店的总销售额并从在线商店 - 服装。 二、什么是烧瓶? 什么是烧瓶?它是一个Web框架 -…

指数杠杆平台是什么?融资杠杆一般是多少?

指数杠杆平台是近年来兴起的一种金融投资工具,它通过使用杠杆效应,允许投资者以较少的资金投入获得较大的投资回报。指数杠杆平台交易的产品通常是股票指数,例如道琼斯工业平均指数、纳斯达克综合指数等。 在指数杠杆平台交易中,…

ChatGPT:让机器学习与深度学习变得轻松有趣

💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 深度学习和机器学习是当…

互联网医院系统:数字时代医疗的未来

随着科技的迅速发展,互联网医院系统已经成为医疗领域的一大创新。这一数字化解决方案不仅为医疗保健提供了更多的便捷性,还在全球范围内推动了医疗服务的变革。本文将探讨互联网医院系统的定义、优势和未来潜力。 什么是互联网医院系统? 互…

5.外部中断

中断初始化配置步骤: IO口初始化配置 开启中断总允许EA 打开某个IO口的中断允许 打开IO口的某一位的中断允许 配置该位的中断触发方式 中断函数: #pragma vector PxINT_VECTOR __interrupt void 函数名(void){}#pragma vector PxINT_VECTOR __int…

PMP和ACP考哪个证书好,还是两个都考?

建议有条件都考,如果只能考一门,建议考PMP,PMP考试中会涉及敏捷管理的内容,特别是今年发布了新考纲,敏捷管理的内容已经增加到了50%。 先讲一下PMP PMP是美国PMI为考察项目管理人士的专业能力而设立的考试&#xff0…

使用Git下载大语言模型

在下载Huggingface和ModelScope上面的大语言预训练模型的时候,经常会因为网页无法访问或者文件太大无法下载的情况,是大家常常比较苦恼的事情,下面给出用Git下载模型到本地的方法,可以轻松解决上述问题。 目录 一、下载和安装Gi…