Android记录--DialogFragment使用时遇到的坑

101 阅读1分钟

维护一个老的应用,使用DialogFragment作为Dialog进行展示

在测试的时候,连续点击展示Dialog的按钮,会报错

java.lang.IllegalStateException: Fragment already added

查询文章:

[参考文章](踩坑记-Fragment already added - 知乎)

参考文章DialogFragment异常Fragment already added的原因与解决办法 - ganzhijie - 博客园

原因是短时间内连续去show的时候,这个操作是异步执行,短时间内连续添加Fragment,所以报错

最简单的解决方式:

重写自己的DialogFragment的show方法:

@Override
public void show(@NonNull FragmentManager manager, @Nullable String tag) {
    if (manager.isDestroyed() || isAdded()) {
        return;
    }
    super.show(manager, tag);
}