android - 即使关闭后也会弹出警报对话框

标签 android popup android-alertdialog

我遇到了一个典型的问题,但对我来说似乎很奇怪。详细信息是这样的 - 在我的应用程序的 Activity 中,有编辑文本和提交按钮。在编辑文本中填写数据后,用户可以单击提交按钮。单击提交按钮后,根据用户输入的值,将显示两个警报对话框中的一个。一种是成功,一种是失败。

问题是,当用户输入无效数据并单击提交按钮时,会打开失败警报对话框。我在失败的警报对话框上有一个按钮(确定),单击它后我编写了 dialog.dismiss(); 使其消失,以便用户可以重新检查数据并且可以修改。但问题是,在重新检查和修改数据时,如果他更改方向,即使没有单击提交按钮,也会再次弹出失败的警报对话框。请提出建议。

额外详细信息(尽管对于此问题可能不是必需的):在更改方向时,会重新创建 Activity 。因此,我将当前数据保存在 onSavedInstanceState() 中,并在 onCreate() 方法中检索它以设置编辑文本中的值。一切正常,但一旦单击提交按钮,就会出现相应的警报对话框。然后改变方向后,对话框再次弹出。我确信我在 onClick() 方法中编写了 showDialog(1); ,但为什么控件会返回到 onClick 并显示警报对话框,即使没有单击。

protected Dialog onCreateDialog(int id) {
   switch(id){                 
      case 0:          
        return new AlertDialog.Builder(this)
                      .setMessage("Success!") 
                      .setIcon(R.drawable.success)
                      .setPositiveButton("OK",
                      new DialogInterface.OnClickListener() {
                         @Override
                         public void onClick(DialogInterface dialog, int which) {
                            dialog.dismiss();                   
                         }
                      }).show();
       case 1:
           return new AlertDialog.Builder(this)
                      .setMessage("Failed")
                      .setIcon(R.drawable.failure)
                      .setPositiveButton("OK",
                       new DialogInterface.OnClickListener() {

                           @Override
                           public void onClick(DialogInterface dialog, int which) {
                              dialog.dismiss();     
                              return;
                           }
                        }).show();   
           }
           return null;
       }

这是显示警报对话框的方法。

public void onClick(View v) {
   switch (v.getId()) {    
      //Here there are other cases too.
      case R.id.submit:
        getEditTexts();
        validator();
      break;
   }
}

public void validator() {              
    if(generator.receiveVal(0,0,sudo)) {
       showDialog(0);
     }
    else if(!generator.receiveVal(0,0,sudo)) {
       showDialog(1);
    }
}

最佳答案

只需尝试将 .create() 替换为 .show()。在你的情况是这样的:

case 1:
               return new AlertDialog.Builder(this)

               .setMessage("Failed")
               .setIcon(R.drawable.failure)
               .setPositiveButton("OK",
                       new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog, int which) {

                            dialog.dismiss();

                          return;
                        }
                    }).create();   //Here replaced .show with .create()

关于android - 即使关闭后也会弹出警报对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12436370/

相关文章:

ios - `window.close`被 `webView.uiDelegate`打开后如何处理?

java - 使用混淆器时不显示自定义弹出菜单图标

android - 在警告对话框中显示多行文本

javascript - 避免 Dijit 菜单与其目标 div 之间重叠

java - 在 Android 中将 AlertDialog Builder 限制为最多两行

java - 警报对话框不会显示

Android:如何将枚举放入 bundle 中?

android - Cordova 构建错误 - EPERM,不允许操作

java - 使用 SpongyCaSTLe 验证 ECDSA 签名

android - 选项卡式 Activity 不起作用