BACK ボタンを押したときの動作を変える方法

簡単なハウ・ツーシリーズ。

ここではアンドロイドのバックボタンの動きを変える方法について説明します。

BACK ボタンとは?

Android アプリはナビゲーションの一部をバックボタンに依存しています。アンドロイドのエコシステムにおいては、BACK ボタンは必須の機能です。

ちなみにその他の必須機能はホームとメニューです。Android 2.3 の互換性プログラム (Compatibility Program) の資料には次のように明記されています。

The Home, Menu and Back functions are essential to the Android navigation paradigm. Device implementations MUST make these functions available to the user at all times, regardless of application state.
(参考訳:「ホーム」、「メニュー」、「バック」機能は Android のナビゲーションパラダイムに不可欠です。 端末の実装においては、アプリケーションの状態に関わらず常にユーザーに対してこれら三つを利用可能にしなければなりません)

端末ごとのバックボタンは次のようにみえます。

通常のスマートフォンでは次のように BACK ボタンが用意されます。(写真は DROID X)

Android 端末のバックボタン

タブレット (Android 3.x, Honeycomb) では次のようになります。(写真は XOOM から)

XOOM のバックボタン

BACK ボタンの動作の変更

基本的に BACK ボタンはアクティビティスタックをポップしてひとつ前のアクティビティに移動します。自然で Android らしいナビゲーションをするために、 やたらと変な動きにするべきではありません。

が、例えば ViewFlipper などを使ってひとつのアクティビティの中の複数の View を置き、 それらを切り替える時などは、ユーザーにとって一つ前に戻るという動作は一つ前の View (Activity ではなく) に移動した方が自然かもしれません。

このような場合には、次のようにして onKeyDown で BACK ボタンの動作を上書きします。

  @Override
  public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(keyCode==KeyEvent.KEYCODE_BACK){
      viewFlipper.showPrevious();
      return true;
    }
    return false;
  }

onKeyDown では処理を行ったら true を返します。イベントの処理を行わず、次のレシーバへと処理を渡す場合は false を返します。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Android 開発入門