关于Fragment使用中遇到的异常:Fragment already added和fragment not attached&

DialogFragment dismiss闪退异常&DialogFragment何时持有FragmentManager 使用DialogFragment如果在没有调用过show方法时调用dismiss方法,就会出现异常 java.lang.IllegalStateException: Fragment VoiceDialog not associated with a fragment manager. 提示就是没有FragmentManager public class DialogFragment extends Fragment{ /** * Dismiss the fragment and its 阅读详情

转自:http://blog.sina.com.cn/s/blog_5da93c8f0102v042.html


问题1:java.lang.IllegalStateException: Fragment already added异常的处理。

当快速双击调用FragmentTransaction.add()方法添加fragmentA,而fragmentA不是每次单独生成的,就会引起这个异常。
DialogFragment.show()内部调用了FragmentTransaction.add()方法,所以调用DialogFragment.show()方法时候也可能会出现这个异常。

在add()方法时候,先判断fragmentA.isAdded(),如下调用可以避免该异常:

if(!fragmentA.isAdded()){
FragmentManager manager = ((FragmentActivity)context).getSupportFragmentManager();
FragmentTransaction ft = manager.beginTransaction();
ft.add(fragmentA, "fragment_name");
ft.commit();
}

添加:如果已经添加isAdded()判断,是否存在同时访问,added没及时更新导致


问题2:java.lang.IllegalStateException: Fragment MyFragment{410f6060} not attached to Activity

出现该异常,是因为Fragment的还没有Attach到Activity时,调用了如getResource()等,需要上下文Content的函数。

解决方法,就是等将调用的代码写在OnStart()中。另外一种解决方法主要是在调用:
getResources().getString(R.string.app_name); 之前增加一个判断isAdded(),

参考:

http://stackoverflow.com/questions/10919240/fragment-myfragment-not-attached-to-activity

http://stackoverflow.com/questions/6870325/android-compatibility-package-fragment-not-attached-to-activity



问题3:java.lang.IllegalStateException: Fragment already active

在 Fragment 没有被添加到 FragmentManager 之前,我们可以通过 Fragment.setArguments() 来设置参数,并在 Fragment 中,使用 getArguments() 来取得参数。在 Fragment 被添加到 FragmentManager 后,一旦被使用,我们再次调用 setArguments() 将会导致 java.lang.IllegalStateException: Fragment already active 异常。

解决方法:可以使用setter和getter方法进行数据的存储和获取。

参考:http://stackoverflow.com/questions/10364478/got-exception-fragment-already-active/15084683



问题4:java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState

在使用Fragment保存参数的时候,可能是因为需要保存的参数比较大或者比较多,这种情况下页会引起异常。比如代码:

Bundle b = new Bundle();
b.putParcelable("bitmap", bitmap2);
imageRecognitionFragment.setArguments(b);

设置好参数,并且添加hide(),add(),方法之后,需要commit(),来实现两个Fragment跳转的时候,这种情形下参数需要进行系统保存,但是这个时候你已经实现了跳转,系统参数却没有保存。此时就会报
java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
异常。

分析原因:你并不需要系统保存的参数,只要你自己设置的参数能够传递过去,在另外一个Fragment里能够顺利接受就行了,现在android里提供了另外一种形式的提交方式commitAllowingStateLoss(),从名字上就能看出,这种提交是允许状态值丢失的。到此问题得到完美解决,值的传递是你自己控制的。
这里也说一下另外一个问题,bitmap 也可以通过Bundle传递的,使用putParacelable就可以了。


ElasticSearch高亮显示之numOfFragment,fragmentSize,noMatchSize方法详解 引子 问题一:明明索引库中文档内容上千字,为什么ES搜索出来的结果字数总是那么少? 问题二: 我们索引库中的文档内容是非常多的,但是我们会发现搜索出来的结果仅仅只有一两百字,恰好这个结果里边有关键字,而不是文档内容从前往后截取了一二百字。 ES中为什么搜索出来的结果,高亮字段优先展示,而不是文档内容从前往后截取几百个字符串显示? 看完下边三个方法介绍你就明白了。 在我们高亮时使用了HighlightBuilder,创建的过程中,有三个默认值。 fragmentSize 高亮字段内容长度,去除html样式标 阅读详情

相关推荐

AI工程化之生成式UI & A2UI(一)

本文系统介绍了生成式UI和Google A2UI技术。生成式UI通过AI直接生成前端代码(完全生成式)或DSL(混合式),实现千人千面的动态界面和研发提效。Google A2UI提出组件级和消息级协议,采用JSON规范实现渲染框架解耦,支持多端渲染。文章详细阐述了A2UI的架构设计,包括协议生成、服务端处理和渲染器实现,并对比了与传统前端框架的差异,指出A2UI本质是UI=F(AI(UI)+AI(state))的创新模式。最后通过playground项目展示了A2UI的实践应用。

qq_34306228的博客 590

fragment 报Fragment already added错误有几种情况

fragment already added

u012382509的博客 5307

JQ8900语音播报模块在RT-Thread系统下的驱动移植与测试详解

本文详细讲解了如何在RT-Thread嵌入式操作系统中,为JQ8900语音播报模块进行驱动移植与功能测试。内容涵盖从获取驱动代码、配置Kconfig工程、编译烧录到核心代码解析的完整流程,并提供了基于串口通信的上电测试与问题排查方法,帮助开发者快速掌握在RT-Thread系统下集成外部模块的核心技能。

weixin_35677363的博客 593

Fragment already added问题的解决

当快速点击切换不同的Fragment的时候部分手机的app竟然挂了,报出了下面的错误java.lang.IllegalStateException: Fragment already added: xxxxFragment。对于这个问题

k393393的博客 2万+

机器人导航学习历程(四)local planner

local planner   我们先来回顾一下Navigation的框架,可以看出位于红框中的local_planner是move_base节点的一部分,输入包括来自global_planner的全局的规划路径、里程计信息以及local_costmap的信息,输出是速度控制指令,作为控制器的输入。 base_local_planner   局部规划一般是用base_local_planner包...

yuniruchujian的博客 4412

PLC模糊控制模糊PID(梯形图实现+算法分析)

博途PLC的模糊PID控制详细内容请查看下面的博客文章:Matlab仿真+博途PLC模糊PID控制完整SCL源代码参考(带模糊和普通PID切换功能)_博途怎么实现模糊pid_RXXW_Dor的博客-优快云博客模糊PID的其它相关数学基础,理论知识大家可以参看专栏的其它文章,这里不再赘述,本文就双容水箱的模糊PID问题做详细讲解(包括所有源代码和模糊规则设置参数)。

RXXW_Dor的博客 5884

修复一个ViewPager+Fragment报的java.lang.IllegalStateException Fragment already added问题

开发过程遇到一个问题,在使用ViewPager+Fragment加载多个fragment时,报出异常java.lang.IllegalStateException Fragment already added,现将解决方法记录如下。 错误代码: viewPager.setAdapter(adapter); viewPager.setOffscreenPageLimit(VIEW_PAGER_...

newone_helloworld的博客 1万+

heygem本地部署报错:SQLite3 can only bind numbers, strings, bigints, buffers, and null...如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!    📌 特别说明: 文中部分技术问题来源于真实生产环境及网络公开案例,均经过精挑细选与系统化整理,并结合多位大厂资深架构师和一线开发多年实战经验沉淀,

**My Coding Family** 3246

Android ViewPager2+Fragment 问题:fragment Already added 解决

【代码】Android ViewPager2+Fragment 问题:fragment Already added 解决。

OneN的博客 977

储能电池管理系统介绍(一)

介绍储能BMS的架构以及各模块功能

manjixingkong1234的专栏 1916

elevation mapping算法3之使用D435i相机离线或在线订阅点云和tf关系生成高程图

本文主要学习使用D435i相机发出的点云作为高程图的点云输入,如何离线输入点云生成高程图,进一步学习如何在线订阅点云生成高程图。

重点记录机器人和自动驾驶相关领域的技术,尤其是计算机视觉,视觉SLAM等,不仅有前言文献或必备算法的学习,也会有实际应用的点滴经验 3489

安卓爬坑记录—— Android Fragment already added

Navigation使用bug记录:可能会与其他框架冲突,在运行后便出现了爆红:**Fragment already added。*

薪火_的博客 901

Transformer时间序列预测-多变量输入-单变量输出+多变量输出,完整代码数据,可直接运行

Transformer时间序列预测-多变量输入-单变量输出+多变量输出,完整代码数据,可直接运行

9794

Fragment already added异常的原因与解决办法

Fragment already added 异常的原因、分析与解决办法

X1876631的专栏 2万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Fragment already added 解决方式

先判断Fragment有没有被添加(isAdded),但是仅仅有这个远远达不到我们需要的,还需要为这个Fragment加一个Tag,最后发现即使加了Tag还是不行,因为如果快速的点击两个Fragment切换页面,mFragmentManager().findFragmentByTag(这个方法返回来还是null。原因就是commit()方法执行后并没有立即 add(mFragmentContain...

chen1026241686的专栏 7683

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Android Fragment :java.lang.IllegalStateException: Fragment already added

java.lang.IllegalStateException: Fragment already added 解决方式。

ruanyandong的博客 1615

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

android开发-bug记录

android

qq_42052656的博客 5029

kotlin使用viewpager+fragment报错 java.lang.IllegalStateException: Fragment already added

遇到一个奇怪的问,kotlin使用viewpager+fragment报错 java.lang.IllegalStateException: Fragment already added ,按理说不应该有错的,可是偏偏一启动就报错挂掉了。后面偶然发现,在onCreateView方法里面输出view System.identityHashCode是等于0 的,应该是生命周期的问题,就是界面view还没初始化完成就使用view的结果,按理说应该报空指针NullPointerException之类的才是,可是

k9526310的博客 1081

关于 java.lang.IllegalStateException: Fragment already added 解决方式

前言 最近发现项目中出现这个bug,很频繁。网上查找了几种解决方案,效果不是太理想,现就将使用修改方案一一列出来背景 项目底部四个tab页面切换导致,tab切换方案是,将四个Fragment添加到一个Activity中进行管理动态hidden(),show(),add()。异常:java.lang.IllegalStateException: Fragment already added: In

Android 工程化与移动架构实践 5万+

Fragment报错 java.lang.IllegalStateException: Fragment already added: XXFragment{47ad471 #0 i

java.lang.IllegalStateException: Fragment already added: GoodsDetailFragment{47ad471 #0 id=0x7f0903f9 android:switcher:2131297273:0} at android.support.v4.app.FragmentManagerImpl.addFragment...

RootYxb的专栏 1674

Fragment java.lang.IllegalStateException: FragmentManager is already executing transactions解决方法

错误产生 setOffscreenPageLimit Activity嵌套几个fragment,其中一个fragmeng 在通过viewPaget+ fragmeng 嵌套时, FragmentAdapter mFragmentAdapter = new FragmentAdapter(getActivity().getSupportFragmentManager() ...

zuochunsheng的博客 5115

java.lang.IllegalStateException: Fragment already added 异常处理!!!!!!

10-15 15:52:00.094 3808 3808 E AndroidRuntime: FATAL EXCEPTION: main 10-15 15:52:00.094 3808 3808 E AndroidRuntime: Process: com.xxxx.xxx, PID: 3808 10-15 15:52:00.094 3808 3808 E AndroidRuntime: java.lang.IllegalStateException: Fragment already adde

wddptwd28的博客 1714

viewpager+Fragment报错:Fragment already added: MsgOuChatFragment

一般是因为fragment中有错误 我遇到的是recyclerview添加headview之前没有设置recyclerview布局管理(setLayoutManager)。代码顺序有问题

liuxuebing2010的专栏 2247

BottomNavigationBar+viewpager底部导航切换,出现 Fragment already added

好久没有写博客了,今天bug解决的头晕,把之前遇到的问题总结下吧. 底部导航就不上代码了,搜下BottomNavigationBar+viewpager出来一堆,而且还是一模一样,这在下就没什么好说的,大致的问题是这样的,导航栏里有一个fragment种嵌套了两个fragment,用com.flyco.tablayout.CommonTabLayout,在fragment中做了个顶部导航...

GuldanHu的博客 3258

fragment方法的解释isAdded()和isDetached()和isHidden()

public final boolean isAdded()如果该Fragment对象被添加到了它的Activity中,那么它返回true,否则返回false。public final boolean isDetached()如果该Fragment已经明确的从UI中分离,那么它返回true。也就是说,在该Fragment对象上使用FragmentTransaction.detach(Fragmen...

达帮主 6975
上一篇: Android系统记录
下一篇: Fragment记录
Cemmmmer
博客等级 码龄14年 3粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值