Java OnBackpress()后强制回答警报对话框

Java OnBackpress()后强制回答警报对话框,java,android,back,Java,Android,Back,我正在开发一个游戏,在游戏过程中,我想防止用户误用后退按钮,因此当按下后退按钮而不是完成活动时,会显示一个警告对话框,询问用户是否真的想返回。如果回答“是”,则活动结束;如果回答“否”,则对话框消失,可以继续游戏。 问题是,如果他们再次按下后退按钮或按下警报对话框中的任何位置,警报就会消失,他们可以继续播放,但不执行我在否定答案中实现的代码继续播放,因此,按钮的背景色不会恢复到原始颜色,倒计时也不会开始 @Override public void onBackPressed() {

我正在开发一个游戏,在游戏过程中,我想防止用户误用后退按钮,因此当按下后退按钮而不是完成活动时,会显示一个警告对话框,询问用户是否真的想返回。如果回答“是”,则活动结束;如果回答“否”,则对话框消失,可以继续游戏。 问题是,如果他们再次按下后退按钮或按下警报对话框中的任何位置,警报就会消失,他们可以继续播放,但不执行我在否定答案中实现的代码继续播放,因此,按钮的背景色不会恢复到原始颜色,倒计时也不会开始

 @Override
    public void onBackPressed() {

            for (int i = 0; i < 4; ++i) {
                botones[i].setBackgroundColor(0xff000000);
            }
            //storage of variables, nothing to do with the question
            new AlertDialog.Builder(this)
                    .setIcon(android.R.drawable.ic_dialog_alert)
                    .setTitle(getString(R.string.AlertaSalirPartida))
                    .setMessage(getString(R.string.AlertaSalirPartidaPregunta))
                    .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {

                            finish();
                        }
                    })
                    .setNegativeButton("No", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                             for (int i = 0; i < 4; ++i) {
                                botones[i].setBackgroundColor(0xff58d3f7);
                            }
                            //starting a countdowntimer, nothing to do with the question

                        }
                    })
                    .show();

    }    

您可以如下方式使对话框不可取消:

AlertDialog.Builder builder = new AlertDialog.Builder(Context);
AlertDialog dialog = builder.create();
dialog.setCancelable(false);
dialog.setCanceledOnOutsideTouch(false);
此外,您可以检查setOnDismissListener和setOnCanceledListener


setCancelable和setCanceledOnOutsideTouch应使其无法在按下时关闭对话框,否则将调用其中一个侦听器。

谢谢这一点,但我只需将.setCancelablefalse