我在下面的代码中写了按钮点击
显示对话框@OnClick(R.id.button)
public void buttonClicked(View v) {
DialogFragment dialog = MyDialogFragment.newInstance();
dialog.show(getSupportFragmentManager(), TAG);
}
效果很好,但是当我多次单击按钮时,非常快 下面发生异常并崩溃app。
java.lang.IllegalStateException: Fragment already added: MyDialogFragment
我尝试下面的代码,但发生了相同的异常。
@OnClick(R.id.button)
public void buttonClicked(View v) {
DialogFragment dialog =
(DialogFragment) getSupportFragmentManager().findFragmentByTag(TAG);
if (dialog != null && dialog.isAdded()) {
return;
}
dialog = MyDialogFragment.newInstance();
dialog.show(getSupportFragmentManager(), TAG);
}
@OnClick(R.id.button)
public void buttonClicked(View v) {
DialogFragment dialog =
(DialogFragment) getSupportFragmentManager().findFragmentByTag(TAG);
if (dialog != null && dialog.isAdded()) {
getSupportFragmentManager().beginTransaction().remove(dialog).commit();
return;
}
dialog = MyDialogFragment.newInstance();
dialog.show(getSupportFragmentManager(), TAG);
}
我该如何处理此异常?
答案 0 :(得分:0)
它可能对你有帮助。
填充一个名为lock的布尔值。
private boolean locked;
如果要创建并显示对话框,请检查该字段:
if(!locked) {
locked = true;
//create and show fragment
}
当您关闭对话框时,将锁定设置为false。