2011-06-16 30 views
1

我的程序中有一个奇怪的错误,我只能用一种方法解释。Alertdialog在点击后仍然活着

当我点击菜单屏幕中的某个按钮时,用户会得到一个AlertDialog,询问他如何继续。 无论他选择什么,他都会转到另一个活动。

事情是,比当用户退出该活动并因此返回到菜单活动时,对话框似乎仍然打开。事情是,它不会每次都发生。

我没有在我的代码中放置一个解雇(),但我确信它是自动完成的。

  AlertDialog alertDialog = new AlertDialog.Builder(YanivMenuActivity.this).create(); 
      alertDialog.setTitle("Active Game"); 
      alertDialog.setMessage("You are in the middle of a game.\nStarting a new game will cancel that one.\nHow do you wish continue?"); 
      alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Start New Game", 
         new DialogInterface.OnClickListener(){ 
         @Override 
         public void onClick(DialogInterface arg0, int arg1) { 
          inGame = false; 
          startActivity(new Intent(YanivMenuActivity.this,YanivGameActivity.class).putExtra("reset", true)); 
         } 
         }); 

      alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "Continue Old Game", 
         new DialogInterface.OnClickListener(){ 
         @Override 
         public void onClick(DialogInterface arg0, int arg1) { 
          startActivity(new Intent(YanivMenuActivity.this,YanivGameActivity.class).putExtra("reset", false)); 
         } 
         }); 
      alertDialog.show(); 
+0

刚才发生了一些奇怪的事情。该对话框仅在玩家点击开始按钮并且存在有效游戏时才显示。如果没有活动的游戏,则跳过对话框。我刚刚遇到了一个没有活动的游戏,所以点击直接进入游戏。当游戏屏幕退出时,它返回到菜单,但显示对话框 - 几乎就像它记住点击!我将不得不看看它是否再次发生。 – theblitz 2011-06-16 12:01:49

回答

3

您几乎回答了您自己的问题。您需要需要拨打电话startActivity(...);之前致电dismiss()

3

请检查下面的代码

AlertDialog alertDialog = new AlertDialog.Builder(YanivMenuActivity.this).create(); 
     alertDialog.setTitle("Active Game"); 
     alertDialog.setMessage("You are in the middle of a game.\nStarting a new game will cancel that one.\nHow do you wish continue?"); 
     alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Start New Game", 
        new DialogInterface.OnClickListener(){ 
        @Override 
        public void onClick(DialogInterface arg0, int arg1) { 
         inGame = false; 
         dismiss(); 
         startActivity(new Intent(YanivMenuActivity.this,YanivGameActivity.class).putExtra("reset", true)); 
        } 
        }); 

     alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "Continue Old Game", 
        new DialogInterface.OnClickListener(){ 
        @Override 
        public void onClick(DialogInterface arg0, int arg1) { 
         dismiss(); 
         startActivity(new Intent(YanivMenuActivity.this,YanivGameActivity.class).putExtra("reset", false)); 
        } 
        }); 
     alertDialog.show(); 
2

调用start活动之前,必须先取消对话框:

public void onClick(DialogInterface arg0, int arg1) { 
alertDialog.cancel(); 
startActivity(new Intent(YanivMenuActivity.this,YanivGameActivity.class).putExtra("reset", false)); 
         } 
+0

取消和解雇有什么区别? – theblitz 2011-06-16 11:52:15

+0

这里是我发现的:通常情况下,一个对话框在作业完成并被从屏幕上移除时被解散。当用户想要退出对话框并按下“后退”按钮时,对话框将被取消。 例如,屏幕上有一个标准的Yes/No对话框。如果用户单击“否”,则对话框将被解除,“否”的值将返回给调用者。如果不是选择是或否,用户点击返回来退出对话框而不是做出选择,然后对话框被取消,并且没有值返回给调用者。SO IN UR CASE DISMISS应该B USED.I STANDED CORRECTED – Nitin 2011-06-16 11:57:00

0
alertbox.cancel(); 

这是当你想关闭警告框,你应该做的。请记住用alertbox的名称替换alertbox。

相关问题