Android BackボタンとMenuボタンの共存
Androidでは,Menuボタンを押してMenuを表示させたいとき,
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
と
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.hoge:
// hogeを選択したときの処理
return true;
}
return super.onOptionsItemSelected(item);
}
をActivityに記述すれば,Menuボタンを押したときにMenuが表示されるが,1つ前の記事で書いたようなBackボタンのイベントを拾うと,Menuボタンを押したときにelseに入ってしまうため,Menuボタンが無効化されてしまう。
BackもMenuも拾いたいときには上の2つを書いた上で次のように書こう!
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) { // Backボタンが押されたら
// Backボタンを押したときの処理
}else if (keyCode == KeyEvent.KEYCODE_MENU) { // Menuボタンが押されたら
openOptionsMenu(); // これによりMenuが表示される
}
return true;
}