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