java.lang.IllegalStateException: Fragment already added:  ******Effect

出现的原因是commit方法提交是异步的,所以容易出现,判断的时候是还没有added的状态,但是在真的添加的时候,重复添加了,其实就是一个同步异步的问题。

解决方式其实就是自己添加一个tag,每个fragment一个tag就可以解决重复添加导致的异常了。

mAdded = new boolean[]{false, false, false, false, false, false};
private synchronized void setIndexSelected(int index) {
Logcat.d(TAG, "mIndex " + mIndex + "; index " + index);
if(mIndex == index){
return;
}
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction ft = fragmentManager.beginTransaction(); //隐藏
ft.hide(mFragments[mIndex]);
//判断是否添加
if (index < mFragments.length) {
if (!mFragments[index].isAdded() && !mAdded[index]) {
Logcat.d(TAG, "add " + mFragments[index]);
ft.add(R.id.content, mFragments[index]).show(mFragments[index]);
mAdded[index] = true;
} else {
Logcat.d(TAG, "show " + mFragments[index]);
ft.show(mFragments[index]);
}
}
ft.commit();
//再次赋值
mIndex = index;
}
[// ::] - ::00.457     E AndroidRuntime: java.lang.IllegalStateException: Fragment already added: SoundEffectFragment{acd69f9 # id=0x7f0e0205}
[// ::] - ::00.457 E AndroidRuntime: at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:)
[// ::] - ::00.457 E AndroidRuntime: at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:)
[// ::] - ::00.457 E AndroidRuntime: at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:)
[// ::] - ::00.457 E AndroidRuntime: at android.support.v4.app.FragmentManagerImpl$.run(FragmentManager.java:)
[// ::] - ::00.457 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:)
[// ::] - ::00.457 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:)
[// ::] - ::00.457 E AndroidRuntime: at android.os.Looper.loop(Looper.java:)
[// ::] - ::00.457 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:)
[// ::] - ::00.457 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
[// ::] - ::00.457 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:)
[// ::] - ::00.457 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:)

Fragment已经被added了导致的异常。的更多相关文章

  1. alias导致virtualenv异常的分析和解法

    title: alias导致virtualenv异常的分析和解法 toc: true comments: true date: 2016-06-27 23:40:56 tags: [OS X, ZSH ...

  2. VS2012外接程序VMDebugger未能加载或导致了异常

    转http://blog.csdn.net/maryhuan/article/details/42676915 故障现象:打开Visual Studio 2010后弹出错误框,外接程序VMDebugg ...

  3. 【原创】访问Linux进程文件表导致系统异常复位的排查记录

    前提知识: Linux内核.Linux 进程和文件数据结构.vmcore解析.汇编语言 问题背景: 这个问题出自项目的一个安全模块,主要功能是确定某进程是否有权限访问其正在访问的文件. 实现功能时,需 ...

  4. MySQL Replication--修改主键为NULL导致的异常

    测试环境:MySQL 5.5.14/MySQL 5.6.36 测试脚本: create table tb001(id int primary key,c1 int); alter table tb00 ...

  5. 第四章 TCP粘包/拆包问题的解决之道---4.2--- 未考虑TCP粘包导致功能异常案例

    4.2 未考虑TCP粘包导致功能异常案例 如果代码没有考虑粘包/拆包问题,往往会出现解码错位或者错误,导致程序不能正常工作. 4.2.1 TimeServer 的改造 Class : TimeServ ...

  6. Tomcat8.5 升级tomcat版本导致出现异常,Base64不存在

    Tomcat8.5 升级tomcat版本导致出现异常,Base64不存在 原因分析: 由于tomcat由7升级到8.5导致Base64的引用路径错误,默认引用为8.5中的jar, 解决方案: 修改引用 ...

  7. 代码中会话同步(同步redis)导致的异常问题

    背景: 第一天拷贝了一份tomcat(配置了redis会话同步),部署了erp-rocketmq应用(用作给顾客发送消息).            第二天早晨,整个erp系统出现异常情况: 1> ...

  8. ArcGIS for Android 10.1.1API 中文标注导致程序异常崩溃问题

    1.前言 问题:在部分Android机型中使用ArcGIS for Android 10.1.1 API 中文标注导致程序异常崩溃. 说明:手里有两台机器一台是Nexus4,原生系统,版本4.4.4, ...

  9. VS2013启动 外接程序VMDebugger未能加载或导致了异常

    故障现象:打开Visual Studio 2010后弹出错误框,外接程序VMDebugger未能加载或导致了异常,是否希望移除该外接程序,错误号:80004005.系统版本:WIN10 64位专业版, ...

随机推荐

  1. 【RL-TCPnet网络教程】第35章 FTP文件传输协议基础知识

    第35章      FTP文件传输协议基础知识 本章节为大家讲解FTP(File Transfer Protocol,文件传输协议)的基础知识,方便后面章节的实战操作. (本章的知识点主要整理自网络) ...

  2. [Swift]LeetCode735. 行星碰撞 | Asteroid Collision

    We are given an array asteroids of integers representing asteroids in a row. For each asteroid, the ...

  3. Redis 设计与实现 (六)--发布订阅

    发布订阅 相关命令:publish(发布)  subscribe(订阅)  psubscribe(支持通配符匹配) 发布者--频道--订阅者(发布和订阅都是客户端频道是服务端) 1.publish-  ...

  4. fiddler抓取https失败解决方案

    众所周知,Fiddler默认只能抓取到http请求,要抓取到https请求我们还需要FiddlerCertMaker插件的支持, 至于怎么使用fiddler抓https及插件的使用方式,大家可以去百度 ...

  5. MySQL优化之my.conf配置详解

    最近项目不太忙,所以有时间静心来研究下mysql的优化,对于MySQL的设置是否合理优化,直接影响到网站的速度和承载量!同时,MySQL也是优化难度最大的一个部分,不但需要理解一些MySQL专业知识, ...

  6. Python内置函数(13)——complex

    英文文档: class complex([real[, imag]]) Return a complex number with the value real + imag*1j or convert ...

  7. BBS论坛(七)

    7.1.修改邮箱界面完成 (1)cms/cms_resetemail.html {% extends 'cms/cms_base.html' %} {% block title -%} 修改邮箱 {% ...

  8. 安装需要的第三方库时,命令行输入pip提示不是内部或外部命令

    简介 在做Python开发时,安装需要的第三方库时,大多数人喜欢选择在命令行用pip进行安装. 然而有时敲入pip命令会提示‘pip’不是内部或外部命令..如图: 解决办法 1.在python安装目录 ...

  9. cmd命令窗口的快速选中复制黏贴

    右击"窗口标题栏",选择属性,进入属性面板: 在"选项"面板勾选编辑选项下的"快速编辑模式"; 点击确认. 这时鼠标左键就有了选中功能,可以 ...

  10. Javascript的原型继承,说清楚

    一直以来对Javascript的原型.原型链.继承等东西都只是会用和了解,但没有深入去理解这门语言关于继承这方面的本质和特点.闲暇之余做的理解和总结,欢迎各位朋友一起讨论. 本文本主要从两段代码的区别 ...