强制在onBackPressed()之后回答警告对话框

时间:2014-09-15 18:58:17

标签: java android back

我正在开发一款游戏,并且在游戏过程中我希望防止用户错过后退按钮,因此当按下后退按钮完成活动时,会显示一个警告对话框,询问他们是否真的想要回去。如果他们回答"是",活动结束,如果他们回答"否"对话框消失,他们可以继续游戏。 问题是,如果他们再次触摸后退按钮或者如果他们按下警报对话框中的任何地方,它会消失并且可以继续播放,但是如果没有执行我在否定答案中实施的代码以继续播放,因此按钮的背景颜色不会恢复到原始颜色,倒计时器也不会启动

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

    }    

1 个答案:

答案 0 :(得分:0)

您可以使对话框不可取消,如下所示:

AlertDialog.Builder builder = new AlertDialog.Builder(Context);
AlertDialog dialog = builder.create();
dialog.setCancelable(false);
dialog.setCanceledOnOutsideTouch(false);

此外,您还可以查看setOnDismissListenersetOnCanceledListener

setCancelable和setCanceledOnOutsideTouch应该使它无法关闭onbackpressed对话框,否则将调用其中一个侦听器。