Fragment已经被added了导致的异常。
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了导致的异常。的更多相关文章
- alias导致virtualenv异常的分析和解法
title: alias导致virtualenv异常的分析和解法 toc: true comments: true date: 2016-06-27 23:40:56 tags: [OS X, ZSH ...
- VS2012外接程序VMDebugger未能加载或导致了异常
转http://blog.csdn.net/maryhuan/article/details/42676915 故障现象:打开Visual Studio 2010后弹出错误框,外接程序VMDebugg ...
- 【原创】访问Linux进程文件表导致系统异常复位的排查记录
前提知识: Linux内核.Linux 进程和文件数据结构.vmcore解析.汇编语言 问题背景: 这个问题出自项目的一个安全模块,主要功能是确定某进程是否有权限访问其正在访问的文件. 实现功能时,需 ...
- MySQL Replication--修改主键为NULL导致的异常
测试环境:MySQL 5.5.14/MySQL 5.6.36 测试脚本: create table tb001(id int primary key,c1 int); alter table tb00 ...
- 第四章 TCP粘包/拆包问题的解决之道---4.2--- 未考虑TCP粘包导致功能异常案例
4.2 未考虑TCP粘包导致功能异常案例 如果代码没有考虑粘包/拆包问题,往往会出现解码错位或者错误,导致程序不能正常工作. 4.2.1 TimeServer 的改造 Class : TimeServ ...
- Tomcat8.5 升级tomcat版本导致出现异常,Base64不存在
Tomcat8.5 升级tomcat版本导致出现异常,Base64不存在 原因分析: 由于tomcat由7升级到8.5导致Base64的引用路径错误,默认引用为8.5中的jar, 解决方案: 修改引用 ...
- 代码中会话同步(同步redis)导致的异常问题
背景: 第一天拷贝了一份tomcat(配置了redis会话同步),部署了erp-rocketmq应用(用作给顾客发送消息). 第二天早晨,整个erp系统出现异常情况: 1> ...
- ArcGIS for Android 10.1.1API 中文标注导致程序异常崩溃问题
1.前言 问题:在部分Android机型中使用ArcGIS for Android 10.1.1 API 中文标注导致程序异常崩溃. 说明:手里有两台机器一台是Nexus4,原生系统,版本4.4.4, ...
- VS2013启动 外接程序VMDebugger未能加载或导致了异常
故障现象:打开Visual Studio 2010后弹出错误框,外接程序VMDebugger未能加载或导致了异常,是否希望移除该外接程序,错误号:80004005.系统版本:WIN10 64位专业版, ...
随机推荐
- AIO系列文档(2)----TIO使用
AIO系列文档(1)----图解ByteBuffer中介绍了ByteBuffer用法,下面通过介绍t-io介绍如何使用: hello world例子简介 本例子演示的是一个典型的TCP长连接应用,代码 ...
- [Swift]LeetCode163. 缺失区间 $ Missing Ranges
Given a sorted integer array where the range of elements are [0, 99] inclusive, return its missing r ...
- Docker for windows : 安装Redis
一.拉取Redis镜像 docker pull hub.c..com/library/redis: 二.创建并运行Redis docker run -d -it --name redis d4f259 ...
- 两分钟搞懂UiAutomator、UiAutomator2、Bootstrap的关系
很多同学经过一段时间的学习之后都明白了Appium的基本原理,但是越学习到后面发现出现的很多陌生名词无法弄清楚其具体作用,今天这篇文章的目的就是为了让大家来弄懂三个高频名词:UiAutomator.U ...
- 优化之Joiner组件
Joiner组件在运行时需要额外的内存空间处理中间结果,因此会影响性能 可通过查看Joiner performance计数器来决定Joiner组件是否需要优化 通过如下方式优化Joiner组件 将Ma ...
- Spring中的IOC_源码_随笔
Spring ioc 叫控制反转,也就是把创建Bean的动作交给Spring去完成. spring ioc 流程大致为 定位-> 加载->注册 先说几个比较有意思的点 1.Spring中 ...
- php内核一些常识
整个PHP环境和Zend环境会涉及多个全局变量,下面是几个比较重要的: php_core_globals core_globals(main/php_globals.h) ==> PG PHP调 ...
- Python内置函数(10)——chr
英文文档: chr(i) Return the string representing a character whose Unicode code point is the integer i. F ...
- npm私有仓库 配置verdaccio在docker环境
前端开发过程中,少不了自己封装一些通用的包,但又不想放在公共的平台,所以搭建一个npm私有的仓库是很有必要的. 在这里简单介绍如何使用 verdoccio 在docker环境下的配置.verdocci ...
- 【转】Kali更新源
1.切换到root用户(如果已经是root用户就直接看第二步) dnt@Kali:~$ su 2.用vim打开sources.list,手动添加下面的更新源 root@Kali:~# vim /etc ...