我有一个扩展的DialogFragment,它从当前的Fragment打开。 最近我发现可以点击导致对话框在短时间内打开两次的元素,它将强制打开两个对话框,一个在另一个上面。这是我的应用程序的意外行为。我想只打开一个对话框实例。我做错了什么?
下面是我打开对话框的代码。
public boolean onActionItemSelected(int menuId) {
switch (menuId) {
case R.id.action_change_passcode:
pinChangeFlag = true;
AbstractPinDialog pinChangeFirstDialog = new StandardPinDialog(this);
pinChangeFirstDialog.show(getFragmentManager(), StandardPinDialog.class.getName());
return true;
//... other cases
}
}
答案 0 :(得分:0)
一种简单的方法是设置一个像
这样的全局布尔标记isDialogVisible=false;
显示对话框时,将其值设置为true。在显示该对话框之前检查
if(! isDialogVisible){
dialog.show();
}
因此只会出现一个对话框。
或者第二种方法是检查是否已创建对话框的视图,然后使用类似的逻辑不显示第二个对话框。