[转] DialogFragment Fragment already added

原文地址:http://blog.csdn.net/u012987382/article/details/46984053
现象
异步调用两个接口,公用一个加载进度框(DialogFragment),前一个加载框未dismiss,后一个已经开始 show。就会以出现 “Fragment already added” 运行时异常。
解决方法
在显示 Fragment 之前,判断之前的 Fragment 是否处于显示状态。

1
2
3
4
5
if(!mDialogFragment.isAdded() 
&& !mDialogFragment.isVisible()
&& !mDialogFragment.isRemoving()) {
mDialogFragment.show(getFragmentManager().beginTransaction(),"normal_custom_progress_dialog");
}

说明

1
public final boolean isAdded()

如果该 Fragment 对象被添加到了它的 Activity 中,那么它返回 true,否则返回 false。

1
public final boolean isRemoving()

如果当前的 Fragment 对象正在从它的 Activity 中被删除,那么就返回 true。这个删除过程不是该 Fragment 对象的 Activity 的结束过程,而是把 Fragment 对象从它所在的 Activity 中删除的过程。

1
public final boolean isVisible()

如果该 Fragment 对象对用户可见,那么就返回 true。

坚持原创及高品质技术分享,您的支持将鼓励我继续创作!