IllegalStateException: Fragment already added
该问题是由于要显示的Fragment已经存在与记录当中,但是你又第二次add.
if (!fragment.mDetached) { 1218 if (mAdded.contains(fragment)) { 1219 throw new IllegalStateException("Fragment already added: " + fragment); 1220 } 1221 mAdded.add(fragment); 1222 fragment.mAdded = true; 1223 fragment.mRemoving = false; 1224 if (fragment.mHasMenu && fragment.mMenuVisible) { 1225 mNeedMenuInvalidate = true; 1226 } 1227 if (moveToStateNow) { 1228 moveToState(fragment); 1229 } 1230 }
这是FragmentManager.java中的源代码,这段代码应该属于异步。所以不管你的Fragment相关的状态有没有更新或处理完成,即使来了相同的Fragment这段代码也会执行。就像上面的代码,对于add相同的F(Fragment),F已经存在mAdded中了,你还往里面添加,肯定会抛出异常了。
对于开发应用而言,可以先判断记录中是否存在该Fragment。若存在,则可以直接show或者可以先remove再add,肯定还有其它方法,请自行尝试找出。
对于在系统方面解决这个问题,我的方法是对该代码加上同步块,另外在进入if语句之后先remove掉之前的fragment。该方法暂时解决了这个问题,不知道是不是有什么严重的后遗症,如有不对的地方,请各位大神进行指点改正。谢谢!
IllegalStateException: Fragment already added相关推荐
- Android DialogFragment 遇到 java.lang.IllegalStateException: Fragment already added: 的解决方法
Android DialogFragment 遇到 java.lang.IllegalStateException: Fragment already added: 的解决方法 参考文章: (1)An ...
- [Android Pro] java.lang.IllegalStateException: Fragment(XXFragment) not attached to Activity异常
[Android Pro] java.lang.IllegalStateException: Fragment(XXFragment) not attached to Activity异常 参考文章: ...
- viewpager2异常: java.lang.IllegalStateException: Fragment no longer exists for key f#1: unique id 8052
异常信息: java.lang.IllegalStateException: Fragment no longer exists for key f#1: unique id 805285bc-7a1 ...
- Android Fragment异常:java.lang.IllegalStateException: Fragment XXXFragment not attached to Activity
出现该异常,是因为Fragment的还没有Attach到Activity时,调用了如getResource()等需要上下文Context的函数.解决方法,就是等将调用的代码写在OnStart()中.
- 【Fragment】管理机制
before 想想在fragment出现前我们如何实现类似fragment的功能呢?需求是要做一个相对独立的布局功能,可能在多个地方需要复用到,还有就是他需要能够被动态的切换,于是乎,写个layout ...
- android 之Fragment的详解
友情链接:点击打开链接 1.将Activity传值到Fragment 具体步骤: <1>声明碎片事务器对象 private FragmentManager fragmentManager; ...
- 关于fragment backState的原理
在使用Fragment的时候我们一般会这样写: FragmentTransaction transaction = getSupportFragmentManager().beginTransacti ...
- 深入一点 让细节帮你和Fragment更熟络
有一段时间没有写博客了.作为2017年的第一篇,初衷起始于前段时间一个接触安卓开发还不算太长时间的朋友聊到的一个问题: "假设,想要对一个Fragment每次在隐藏/显示之间做状态切换时进行 ...
- 安卓:Fragment的懒加载
Android应用开发过程中,ViewPager同时加载多个fragment,以实现多tab页面快速切换, 但是fragment初始化时若加载的内容较多,就可能导致整个应用启动速度缓慢,影响用户体验. ...
- Android 通过源码解析 Fragment 启动过程
0x00 作为一名 Android 开发者,大家绝对都接触过 Fragment 开发,而且绝大多数人例如我一直都很难记住下图 Fragment 复杂的生命周期,更别说要将其与 Activity 的生命 ...
最新文章
- Anaconda入门使用指南(一)
- cas协议,以及tomcat搭建cas服务器
- [AHOI2014/JSOI2014]支线剧情
- 【2012百度之星/初赛上】A:度度熊就是要第一个出场
- 内容可编辑_让PDF像WORD一样自由编辑,好用的PDF编辑工具推荐
- 怎么设置电脑壁纸_电脑怎么设置双屏或多屏显示?
- idea base64encoder没有jar包_老师,免费版的IDEA为啥不能使用Tomcat?
- Dnscrypt_wrapper 服务端的安装与配置
- 编译GDAL支持OpenCL使用GPU加速
- 阿里云的短信验证码功能实现
- 模仿全能扫描王实现文档和证件扫描
- Android一行代码去掉百度导航的底部工具箱菜单
- 如何做好终端安全管理?
- iphone申请AppleID后无法登陆App Store
- java.lang.IllegalStateException: Cannot get a text value from a numeric cell
- a different object with the same identifier value was already associated whith
- 基于毕设的微信小程序校园二手商城实现(一)
- excel表格拆分多个表
- dell服务器装独立显卡无显示输出,dell服务器设置独立显卡(dell服务器加显卡)...
- 推荐几个亲测好用高质量学习SQL的网站(建议收藏)