私のアプリは現在、物理的な戻るボタンで無限ループに陥っています。プログラムは、スプラッシュ画面をロードしてからメインメニューに移行するように設定されています。メインメニューに入ると、ユーザーは選択した別のアクティビティに切り替えることができます。例:新しいゲームアクティビティ。ユーザーが新しいゲームアクティビティに参加したら、戻るボタンを押してメインメニューに移動できるようにします。メインメニューに戻ったら、もう一度戻るボタンを押すと、ゲームを終了します。
これは私が各活動に使用しているものです:
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
startActivity(new Intent(NewGameActivity.this, MenuActivity.class));
}
return super.onKeyDown(keyCode, event);
}
これは正しく機能し、ユーザーを問題なくメインメニューに戻します。ただし、ユーザーがメインメニューでもう一度戻るボタンを押すと、エスケープしたばかりの画面に移動します。そのため、毎回前の画面にループバックします。
メインメニューの設定方法は次のとおりです。
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
stopService(new Intent(MenuActivity.this, BGMusicService.class));
MenuActivity.this.finish();
}
return super.onKeyDown(keyCode, event);
}
メインメニューが最初にロードされたらすぐに戻るボタンを押すと、正しく機能してゲームを閉じます。以前に戻るボタンを押して1つの画面からメインメニューに移動した場合にのみ、混乱します。
アップデート:
さて、そのようなものはうまくいきました。メイン画面の戻るボタンを押すと、音楽が停止し、アプリを閉じようとしているように動作しますが、再びメイン画面にフラッシュバックします。毎回2回叩かなければなりません。