Android Alertdialog在单击后保持活动状态

Android Alertdialog在单击后保持活动状态,android,android-activity,android-alertdialog,Android,Android Activity,Android Alertdialog,我的程序中有一个奇怪的bug,我只能用一种方式来解释 当我点击菜单屏幕上的某个按钮时,用户会收到一个AlertDialog,询问他希望如何继续。 无论他选择哪一个,他都会被转到另一个活动中去 问题是,当用户退出该活动并返回到菜单活动时,对话框似乎仍然打开。 事实上,这并不是每次都会发生 我没有在我的代码中添加disclose(),但我确信它会自动这样做 AlertDialog alertDialog = new AlertDialog.Builder(YanivMenuA

我的程序中有一个奇怪的bug,我只能用一种方式来解释

当我点击菜单屏幕上的某个按钮时,用户会收到一个AlertDialog,询问他希望如何继续。 无论他选择哪一个,他都会被转到另一个活动中去

问题是,当用户退出该活动并返回到菜单活动时,对话框似乎仍然打开。 事实上,这并不是每次都会发生

我没有在我的代码中添加disclose(),但我确信它会自动这样做

            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();

你几乎回答了你自己的问题。您需要在
startActivity(…)之前调用
disclose()
呼叫。

您几乎已经回答了自己的问题。您需要在
startActivity(…)之前调用
disclose()
呼叫。

请检查下面的代码

 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();

请检查下面的代码

 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();

在调用“开始活动”之前,必须取消该对话框:

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

在调用“开始活动”之前,必须取消该对话框:

public void onClick(DialogInterface arg0, int arg1) {
alertDialog.cancel();
startActivity(new Intent(YanivMenuActivity.this,YanivGameActivity.class).putExtra("reset", false));
                        }
这是您要关闭警报框时应该执行的操作。记住用alertbox的名称替换alertbox


这是您要关闭警报框时应该执行的操作。记得用alertbox的名称替换alertbox。

取消和取消有什么区别?我发现:通常,对话框在完成任务并从屏幕上删除时会被取消。当用户想要退出对话框并按下后退按钮时,对话框被取消。例如,屏幕上有一个标准的是/否对话框。如果用户单击“否”,则对话框将被取消,并且“否”的值将返回给调用者。如果用户没有选择“是”或“否”,而是单击“上一步”退出对话框,而不是做出选择,那么对话框将被取消,并且不会向调用者返回任何值。因此,在您的情况下,应该使用“驳回”B。我站在更正位置“取消”和“驳回”之间的区别是什么?我发现:通常,当对话框的作业完成并从屏幕上删除时,对话框将被取消。当用户想要退出对话框并按下后退按钮时,对话框被取消。例如,屏幕上有一个标准的是/否对话框。如果用户单击“否”,则对话框将被取消,并且“否”的值将返回给调用者。如果用户没有选择“是”或“否”,而是单击“上一步”退出对话框,而不是做出选择,那么对话框将被取消,并且不会向调用者返回任何值。因此,在您的情况下,应该使用“驳回B”。我站在更正位置,刚刚发生了更奇怪的事情。只有当玩家点击开始按钮并且有一个活动的游戏时,对话框才会显示。如果没有活动的游戏,则跳过该对话框。我刚刚遇到一个没有活动游戏的情况,所以点击直接进入游戏。当游戏屏幕退出时,它返回到菜单,但显示了对话框-几乎就像它记得点击!我得看看它是否再次发生。更奇怪的事情刚刚发生。只有当玩家点击开始按钮并且有一个活动的游戏时,对话框才会显示。如果没有活动的游戏,则跳过该对话框。我刚刚遇到一个没有活动游戏的情况,所以点击直接进入游戏。当游戏屏幕退出时,它返回到菜单,但显示了对话框-几乎就像它记得点击!我得看看它是否会再次发生。