Androidのナビゲーションを考えているときに、ActionBarの「<」(HomeAsUp)とハードウェアの戻るボタンを一緒の挙動にしたいなぁと思ったので、その時の備忘録。
各イベントで呼び出されるメソッドをOverrideして、共通メソッドを呼び出すだけですが。。。
以下サンプル。
public class MyActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // ActionBarの左に「<」を表示するように設定 ActionBar actionBar = getActionBar(); if (actionBar != null) { actionBar.setDisplayHomeAsUpEnabled(true); } } // ActionBarの「<」を押した時に共通メソッドを呼び出すように変更 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: commonAction(); return true; default: return super.onOptionsItemSelected(item); } } // 戻るボタンを押した時に共通メソッドを呼び出すように変更 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { commonAction(); return super.onKeyDown(keyCode, event); } else { return super.onKeyDown(keyCode, event); } } private void commonAction() { //共通の処理 } }