如何一次只显示一个Dialog?

Ash*_*man 11 android customdialog

我的Android应用程序在按钮单击时显示AlertDialog.当我多次单击该按钮时,会创建多个对话框.我怎样才能解决这个问题?

这是我的代码:

button.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        dialog =  new AlertDialog.Builder(context);             
        dialog.show();
    }
});
Run Code Online (Sandbox Code Playgroud)

Ram*_*Ram 21

你需要检查对话框是否显示

Dialog有一个isShowing()方法,如果对话框当前可见,则该方法应该返回.

public AlertDialog myDialog;

public void showDialog(Context context) {
    if( myDialog != null && myDialog.isShowing() ) return;

    AlertDialog.Builder builder = new AlertDialog.Builder(context);
    builder.setTitle("Title");
    builder.setMessage("Message");
    builder.setPositiveButton("ok", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int arg1) {
                dialog.dismiss();
            }});
    builder.setCancelable(false);
    myDialog = builder.create();
    myDialog.show();
  }
Run Code Online (Sandbox Code Playgroud)


Ara*_*raw 6

如果显示对话框,您可以创建一个设置为true的全局标志(布尔值)吗?如果用户单击"确定","是","否"或任何对话框已关闭,则将标志设置为false.

所以类似于:

boolean dialogShown;

If(dialogShown)
{
  return;
}
else
{
  dialogShown = true;
  dialog =  new AlertDialog.Builder(context);              
  dialog.show();
}
Run Code Online (Sandbox Code Playgroud)

  • 总是将木块放在方括号中,即使是一线。您为自己省去了很多麻烦(尤其是在使用带有预处理器和宏的语言时) (2认同)