くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

Actionbarの「<」と戻るボタンの挙動を合わせる

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() {
        //共通の処理
    }
}

参考にしたサイト様