バックキーで確認ダイアログを表示する際のコードです。アクティビティ内に記載します。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event){
Log.d(getClass().getName(), "onKeyDown()");
if(keyCode== KeyEvent.KEYCODE_BACK){
return onKeyBack();
}
return true;
} public boolean onKeyBack() {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(MainActivity.getInstance());
alertDialogBuilder.setTitle("ゲームの終了");
alertDialogBuilder.setMessage("ゲームを終了しますか?");
// アラートダイアログの肯定ボタンがクリックされた時に呼び出されるコールバックリスナーを登録します
alertDialogBuilder.setPositiveButton(
"はい",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// OKを押したときの処理
}
}
);
// アラートダイアログの否定ボタンがクリックされた時に呼び出されるコールバックリスナーを登録します
alertDialogBuilder.setNegativeButton("キャンセル",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// キャンセルを押したときの処理
}
}
);
alertDialogBuilder.setCancelable(true);
// アラートダイアログを表示します
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
return true;
}これだと、バックキー押して、確認ダイアログを表示中に再度バックキーを押すと、このダイアログ自体がキャンセルされてしまいます。なので、ダイアログ自体をキャンセルされたくない場合は上記のsetCancelable()の引数を下記のようにfalseにしてあげます。
alertDialogBuilder.setCancelable(false);