【发布时间】:2016-12-06 07:56:58
【问题描述】:
我试图阻止我的 DialogFragment 打开两次。这是我的工作:
我尝试只保留我的片段的一个实例。我像这样创建并添加我的片段:
//MyFragment.java
public static MyFragment mInstance;
public static void instantiateFragment() {
MyFragment myFragment = MyFragment.getInstance();
if(!myFragment.isAdded()) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(myFragment, TAG);
ft.commit();
}
}
private static MyFragment getInstance() {
if(mInstance == null) {
mInstance = new MyFragment();
}
return mInstance;
}
当一个按钮被点击时,我故意尝试添加两次这样的片段:
MyFragment.instantiateFragment();
MyFragment.instantiateFragment();
但我得到IllegalStateException: Fragment already added. 对此有何想法?
谢谢。
【问题讨论】:
-
你在它上面处理相同的片段。这就是你得到错误的原因。
-
@Divyesh 为什么 myFragment.isAdded() 在第二次调用时返回 false?我不明白。