项目中使用DialogFragment做进度条,有时会报java.lang.IllegalStateException: Fragment already added的问题,导致闪退。

原因是同一个DialogFragment对象被重复加载了多次。

可以查看DialogFragment这个类可以看到DialogFragment的show方法是这样写的

public void show(FragmentManager manager, String tag) {mDismissed = false;mShownByMe = true;FragmentTransaction ft = manager.beginTransaction();ft.add(this, tag);ft.commit();
}

每次show的时候都会调用ft.add(this, tag)这一句,正是因为这里重复加载了相同的对象,才导致了Fragment already added的问题。

我的思路是通过新建一个类继承DialogFragment来重写show方法

通过isAdded()和findFragmentByTag的条件来判断对话框是否加载从而决定是否show。

@Override
public void show(FragmentManager manager, String tag)
{if (!isAdded()&&null == manager.findFragmentByTag( tag )) {super.show(manager, tag);}
}

这样改之后,发现效果并不好,还是会闪退,原因是isAdded()和manager.findFragmentByTag( tag )的状态并不准确。

读者可以自己写一个判断条件,就像DialogFragment的mShownByMe那样,应该就可以解决这个问题 。

我使用了一个更简便的方法。

考虑到是由于add导致的闪退,就直接调用remove方法来解决了

这是最终的方案

@Override
public void show(FragmentManager manager, String tag)
{manager.beginTransaction().remove(this).commit();super.show(manager, tag);
}

反复测试,没有再出现 Fragment already added的闪退了,希望对大家有帮助。

调用DialogFragment做进度条报java.lang.IllegalStateException: Fragment already added问题的最终解决方案相关推荐

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

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

  2. 解决IntelliJ IDEA报错:调用方法[manageApp]时发生异常java.lang.IllegalStateException: 启动子级时出错

    解决IntelliJ IDEA报错:调用方法[manageApp]时发生异常java.lang.IllegalStateException: 启动子级时出错 问题描述:   笔者将一个在 Tomcat ...

  3. 调用方法[manageApp]时发生异常 java.lang.IllegalStateException: 启动子级时出错

    学习maven的初步阶段 在写第一个HelloServlet的servlet程序时,碰见了这样的错误: 严重 [RMI TCP Connection(2)-127.0.0.1] org.apache. ...

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

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

  5. java.lang.IllegalStateException异常:简单的分析和简单解决方案

    java.lang.IllegalStateException异常:简单的分析和简单解决方案 参考文章: (1)java.lang.IllegalStateException异常:简单的分析和简单解决 ...

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

  7. Eureka进行服务调用服务报 java.lang.IllegalStateException: No instances available for XXXX 异常的解决方案。附上完整的代码案例

    使用RestTemplate进行微服务调用,报了一个java.lang.IllegalStateException异常 第一个可能原因 服务提供者 我这里导致的错误原因是没有进行服务发现,导致使用Re ...

  8. java.lang.IllegalStateException Unable to find a @SpringBootConfiguration错误解决方案(亲测)

    问题描述: java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @C ...

  9. springBoot集成websocket报java.lang.IllegalStateException: Failed to register @ServerEndpoint class:错误

    搜了很多答案,大致有以下几种解决办法,如果有类似错误,大家可以按下面几类错误对照检查一下: 1. @ServerEndpoint("/webSocket/message/{xxx}/{xxx ...

  10. 调用方法[manageApp]时发生异常 java.lang.IllegalStateException: 启动子级时出错

    写servlet时启动遇到这样的错误: 经过仔细查找 排除了是Tomcat配置问题 最后发现问题出现在web.xml中 url-pattern的里面少了一个"/" 修改: 重新启动 ...

最新文章

  1. idea自动捕获_Smilefie:如何通过检测微笑来自动捕获自拍
  2. 夏日炎炎,请照顾好你的电脑
  3. spring 学习—spring 的ioc底层原理(03)
  4. spring项目属性注入和bean管理xml 注入一般属性和集合属性
  5. excel趋势线公式导出_Java 添加、读取、删除Excel中的图表趋势线
  6. 如何删除Mac系统里面的所有 DS_Store 文件呢?
  7. 《Java编码指南:编写安全可靠程序的75条建议》—— 指南19:对细粒度的安全定义自定义安全权限...
  8. 蛮力法 —— 求解最大连续子序列和问题
  9. 共轭函数Fenchel不等式
  10. spring事件监听器系列二:@EventListener注解原理
  11. 智能合约语言 Solidity 教程系列5 - 数组介绍
  12. vue手写签名,canvas手写签名,canvas签名图片旋转
  13. Replacing Elements (CodeForces - 1473A)
  14. QCC512x QCC302x Earbud 跑通新建工程 —— ADK6.x 环境搭建、 自带例程
  15. 2022 计算机视觉顶会论文----目标检测
  16. HCL(新华三模拟器)如何连接CRT及改界面颜色
  17. 非常适合新手使用的吉他调音软件!
  18. Spark2.10中使用累加器、注意点以及实现自定义累加器
  19. 于我而言,大早上的好消息——JetBrains Fleet来了
  20. ISO OSI IOS 傻傻分不清楚【每日打卡小知识】

热门文章

  1. Kali离线安装Nessus及过程中可能遇到的问题解决方案
  2. Classic界面chatter中的子选项卡配置
  3. 携程2016校园招聘笔试题分析
  4. Only no-arg methods may be annotated with @Scheduled 的解决方法
  5. codelite解决中文乱码问题
  6. 研究开源的C++的RTB广告系统,通过centos7镜像,解决各种环境问题,使用boost库
  7. 教育技术与c语言程序设计,2018年华东师范大学885教育技术与C程序设计考研复习资料...
  8. win10电脑锁屏快捷键
  9. 红石32位cpu通用计算机,【TRP|HappyWater】32位红石电脑RSC-3230(无命令方块)
  10. 3dmax建模如何设置凹凸贴图