gpt4 book ai didi

java - 按下后退键的对话框

转载 作者:太空狗 更新时间:2023-10-29 14:07:40 25 4
gpt4 key购买 nike

当我按下设备对话框的 backkey 时,我的游戏有一个 alertDialog。如果我按下“退出”,我的游戏就结束了,如果我按下“取消”,那么 toast 出现 3 秒,3 秒后我的游戏再次开始。现在的问题是,当我第一次按下设备的 backkey 时,会出现对话框并且我执行某些功能它工作正常但是如果我再次按下 backkey 而没有“取消”或“退出”游戏然后我的游戏不会再次恢复,直到我按下“否”按钮。

我想要的是,如果我按下 backkey,然后出现对话框,如果我再次按下 backkey,我的游戏将再次恢复,而不会再次显示对话框,谢谢。

这是我的警报对话框代码:

@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {

if (keyCode == KeyEvent.KEYCODE_BACK) {

// GamePanel.thread.setStoped(true);
GamePanel.thread.setRunning(false);

// in the next line of code we also style the dialog through xml which i put in styles


AlertDialog alertDialog = new AlertDialog.Builder(this,R.style.myBackgroundStyle).create();
alertDialog.setTitle("Exit Alert");
alertDialog.setMessage("Do you really want to exit the Game?");
alertDialog.setButton("Quit", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//Best way is firstly use finish() and after that use System.exit(0) to clear static variables. It will give you some free space.
// A lot of applications leave working processes and variables what makes me angry. After 30 minutes of using memory is full and i have to run Task Manager - Lvl 2 clear memory
finish();
System.exit(0);
return;

}
});
alertDialog.setButton2("Cancle", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {

// dialog.cancel();
// GamePanel.thread.resume();
dialog.dismiss();
// When user press the "Cancle" button then game resume for 3 seconds then start again
// Here is the Code of the toasts and each toast appear with delay of one second.

toast = new Toast(Game.this);
TextView textView=new TextView(Game.this);
textView.setTextColor(Color.DKGRAY);
textView.setBackgroundColor(Color.TRANSPARENT);
textView.setTextSize(60);
textView.setText("READY!");
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);

toast.setView(textView);
toast.show();

new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// show toast 2.
toast = new Toast(Game.this);
TextView textView = new TextView(Game.this);
textView.setTextColor(Color.DKGRAY);
textView.setBackgroundColor(Color.TRANSPARENT);
textView.setTextSize(140);
textView.setText("3");
// textView.setText("done!");
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);

toast.setView(textView);
toast.show();
}
}, 2500);


new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// show toast 2.
toast = new Toast(Game.this);
TextView textView = new TextView(Game.this);
textView.setTextColor(Color.DKGRAY);
textView.setBackgroundColor(Color.TRANSPARENT);
textView.setTextSize(140);
textView.setText("2");
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);

toast.setView(textView);
toast.show();
}
}, 5000);

new Handler().postDelayed(new Runnable() {
@Override public void run() {
toast = new Toast(Game.this);
TextView textView=new TextView(Game.this);
textView.setTextColor(Color.DKGRAY);
textView.setBackgroundColor(Color.TRANSPARENT);
textView.setTextSize(140);
textView.setText("1");
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);

toast.setView(textView);
toast.show();

}
}, 7500);

new Handler().postDelayed(new Runnable() {
@Override
public void run()
GamePanel.thread.setRunning(true);
}
}, 10000);


return;
}
}

);
alertDialog.show();

return true;
}
return super.onKeyDown(keyCode, event);
}

}

最佳答案

您需要为您的对话框设置一个OnKeyListener 并检查返回键是否被按下。

这是一个适合您需要的示例代码,您需要按如下方式修改您的代码:

AlertDialog alertDialog = new AlertDialog.Builder(this,R.style.myBackgroundStyle).create();
alertDialog.setTitle("Exit Alert");
alertDialog.setMessage("Do you really want to exit the Game?");
alertDialog.setButton("Quit", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//Best way is firstly use finish() and after that use System.exit(0) to clear static variables. It will give you some free space.
// A lot of applications leave working processes and variables what makes me angry. After 30 minutes of using memory is full and i have to run Task Manager - Lvl 2 clear memory
finish();
System.exit(0);
return;

}
});


//New part regarding the back key when only dialog is shown.
alertDialog.setOnKeyListener(new Dialog.OnKeyListener() {

@Override
public boolean onKey(DialogInterface arg0, int keyCode,
KeyEvent event) {

if (keyCode == KeyEvent.KEYCODE_BACK) {

alertDialog.dismiss();
}
return true;
}
});

这仅在显示对话框时有效,因此,您将能够返回您的 Activity

关于java - 按下后退键的对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31681695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com