该问题是由于要显示的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相关推荐

  1. Android DialogFragment 遇到 java.lang.IllegalStateException: Fragment already added: 的解决方法

    Android DialogFragment 遇到 java.lang.IllegalStateException: Fragment already added: 的解决方法 参考文章: (1)An ...

  2. [Android Pro] java.lang.IllegalStateException: Fragment(XXFragment) not attached to Activity异常

    [Android Pro] java.lang.IllegalStateException: Fragment(XXFragment) not attached to Activity异常 参考文章: ...

  3. 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 ...

  4. Android Fragment异常:java.lang.IllegalStateException: Fragment XXXFragment not attached to Activity

    出现该异常,是因为Fragment的还没有Attach到Activity时,调用了如getResource()等需要上下文Context的函数.解决方法,就是等将调用的代码写在OnStart()中.

  5. 【Fragment】管理机制

    before 想想在fragment出现前我们如何实现类似fragment的功能呢?需求是要做一个相对独立的布局功能,可能在多个地方需要复用到,还有就是他需要能够被动态的切换,于是乎,写个layout ...

  6. android 之Fragment的详解

    友情链接:点击打开链接 1.将Activity传值到Fragment 具体步骤: <1>声明碎片事务器对象 private FragmentManager fragmentManager; ...

  7. 关于fragment backState的原理

    在使用Fragment的时候我们一般会这样写: FragmentTransaction transaction = getSupportFragmentManager().beginTransacti ...

  8. 深入一点 让细节帮你和Fragment更熟络

    有一段时间没有写博客了.作为2017年的第一篇,初衷起始于前段时间一个接触安卓开发还不算太长时间的朋友聊到的一个问题: "假设,想要对一个Fragment每次在隐藏/显示之间做状态切换时进行 ...

  9. 安卓:Fragment的懒加载

    Android应用开发过程中,ViewPager同时加载多个fragment,以实现多tab页面快速切换, 但是fragment初始化时若加载的内容较多,就可能导致整个应用启动速度缓慢,影响用户体验. ...

  10. Android 通过源码解析 Fragment 启动过程

    0x00 作为一名 Android 开发者,大家绝对都接触过 Fragment 开发,而且绝大多数人例如我一直都很难记住下图 Fragment 复杂的生命周期,更别说要将其与 Activity 的生命 ...

最新文章

  1. Anaconda入门使用指南(一)
  2. cas协议,以及tomcat搭建cas服务器
  3. [AHOI2014/JSOI2014]支线剧情
  4. 【2012百度之星/初赛上】A:度度熊就是要第一个出场
  5. 内容可编辑_让PDF像WORD一样自由编辑,好用的PDF编辑工具推荐
  6. 怎么设置电脑壁纸_电脑怎么设置双屏或多屏显示?
  7. idea base64encoder没有jar包_老师,免费版的IDEA为啥不能使用Tomcat?
  8. Dnscrypt_wrapper 服务端的安装与配置
  9. 编译GDAL支持OpenCL使用GPU加速
  10. 阿里云的短信验证码功能实现
  11. 模仿全能扫描王实现文档和证件扫描
  12. Android一行代码去掉百度导航的底部工具箱菜单
  13. 如何做好终端安全管理?
  14. iphone申请AppleID后无法登陆App Store
  15. java.lang.IllegalStateException: Cannot get a text value from a numeric cell
  16. a different object with the same identifier value was already associated whith
  17. 基于毕设的微信小程序校园二手商城实现(一)
  18. excel表格拆分多个表
  19. dell服务器装独立显卡无显示输出,dell服务器设置独立显卡(dell服务器加显卡)...
  20. 推荐几个亲测好用高质量学习SQL的网站(建议收藏)

热门文章

  1. SFDC中的DEBUG
  2. 到底什么是建立时间/保持时间?
  3. openwrt strongswan IPSec IKEV2
  4. pinctrl学习笔记---描述/获得引脚
  5. 游戏挂机运行脚本方法
  6. layim之整合右键菜单
  7. Spanning Tree协议安全攻防
  8. 5800p计算机公式,卡西欧fx-5800p计算器内置公式及公式自定义在隧道测量中的应用...
  9. 49个excel常用技巧(五)
  10. SpringMVC工作原理之四:MultipartResolver