Rah*_*hul 10 android button android-alertdialog
我有Button,点击,显示一个Dialog.一切都像魅力,但如果我双击按钮或快速单击按钮,Dialog打开两到三次.我必须单击后退按钮两次或三次才能解除Dialog.
我已经在SO上搜索了相关问题,但大多数答案建议禁用按钮或使用变量并将其设置为true和false,这不是我的要求.
如果有人知道如何解决这个问题,请帮助我.
我用的代码
// Delete item on click of delete button
holder.butDelete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Dialog passwordDialog = new Dialog(SettingsActivity.this);
passwordDialog.show();
}
});
Run Code Online (Sandbox Code Playgroud)
您只需检查您Dialog是否已经显示:
Dialog passwordDialog = new Dialog(SettingsActivity.this);
holder.butDelete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(!passwordDialog.isShowing()) {
passwordDialog.show();
}
}
});
Run Code Online (Sandbox Code Playgroud)
更新:
如果这在您的情况下不起作用,那么在您的活动中全局声明:
Dialog passwordDialog = null;
Run Code Online (Sandbox Code Playgroud)
并Button点击:
holder.butDelete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(passwordDialog == null) {
passwordDialog = new Dialog(SettingsActivity.this);
passwordDialog.show();
}
}
});
Run Code Online (Sandbox Code Playgroud)
全球申报:
private Boolean dialogShownOnce = false;
private mDialog dia;
Run Code Online (Sandbox Code Playgroud)
你dialog.show();被称为:
dia = new mDialog(getContext());
if (!dia.isShowing() && !dialogShownOnce) {
dia.show();
dialogShownOnce = true;
}
dia.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
dialogShownOnce = false;
}
});
Run Code Online (Sandbox Code Playgroud)
mDialog不一定是全局的,但我在调用mDialog.dismiss()一些超出本地范围的接口.
仍然使用a Boolean,但我不明白为什么它不能使用.
| 归档时间: |
|
| 查看次数: |
13023 次 |
| 最近记录: |