ゴルフのスコアカウンターにメニューボタンと戻るボタンの処理を追加して、少し使いやすくしてみる。戻るボタンのデフォルトの処理では、アプリを終了させてしまうので、データが消えてしまう。プレー中にデータが消えてしまうと大変なので、戻るボタンを押すとワーニングを表示するようにする。そうなるとアプリを終了させる方法がなくなるので、メニューからCloseを選択して終了できるようにする。また、スコアデータをクリアするメニューも追加する。
■ボタンのイベントハンドラ
ActivityのonKeyDownをOverrideする。keyCodeを見てどのボタンが押されたか判定。trueを返すと、後続のイベント処理は行われなくなる。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
// Show dialog, if YES, close this application.
m_alertdlg_close.show();
return true;
}
return false;
}
ワーニングのダイアログ(m_alertdlg_close)は onCreate の中で作成
//Alert dialog for Closing Application
builder.setMessage("If closed, data will be cleared. If you just hide this window, press HOME key. Are you sure you close this application? ")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
finish();
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
m_alertdlg_close = builder.create();
■メニューの実装
実装方法は、開発者サイトの Dev Guide > User Interface > Creating Menus に書いてある通り。丁寧に書いてあるので、すぐに実装できた。


コメントを残す