Home > Android > [Android] Backボタンが押されたときの処理

[Android] Backボタンが押されたときの処理

Androidの戻るボタンが押されると、既定では表示中のアクティビティが閉じられます。
しかし、アプリによってはボタンが押されたタイミングで何かしらの処理を行ったり、無効にしたいこともあるかと思います。

Backボタン押下時に任意処理を実装するための大まかな流れは次のとおりです。

  1. Activity#onKeyDown() をオーバーライド
  2. Backボタン押下時の処理を実装

 

Activity#onKeyDown() をオーバーライド

Activityクラスの onKeyDown() をオーバーライドしておくと、キー押下時にこのメソッドが呼び出されます。

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
    	return super.onKeyDown(keyCode, event);
    }

 
第1引数(ここではkeyCode)に、押されたキーを表すKeyEVENT列挙型定数値が渡されます。
 

Backボタン押下時の処理を実装

KeyEVENT.KEYCODE_BACK がBackボタンに相当するので、keyCodeが一致した場合にのみ任意の処理を行うようにします。

onKeyDown() の戻り値としてfalseを返すと、既定のBack処理がキャンセルされます。
 

サンプルコード

Backボタンを無効にするサンプルです。

public class HogeActivity extends Activity
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        LinearLayout ll = new LinearLayout(this);
        setContentView(ll);

        TextView tvHoge = new TextView(this);
        tvHoge.setText("Hoge");
        ll.addView(tvHoge);
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        //==== キーコード判定 ====//
    	if(keyCode == KeyEvent.KEYCODE_BACK) {
            //-==- Backキー -==-//
            // 以降の処理をキャンセルする。
            //
            return false;
    	}

    	return super.onKeyDown(keyCode, event);
    }
}

 

別の方法で…

dispatchKeyEvent() をオーバーライドすることでも同様の処理を実装できます。
dispatchKeyEvent() についてはまたの機会に書きたいと思います。
 
 

関連があると思われる記事:

このエントリーをはてなブックマークに追加
はてなブックマーク - [Android] Backボタンが押されたときの処理
Facebook にシェア
[`google_buzz` not found]
[`yahoo` not found]
[`livedoor` not found]
[`friendfeed` not found]
[`tweetmeme` not found]
[`grow` not found]

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://gacken.com/wp/program/android/1332/trackback/
Listed below are links to weblogs that reference
[Android] Backボタンが押されたときの処理 from ミライニトドケ

Home > Android > [Android] Backボタンが押されたときの処理

Search
Feeds
Meta
人気の記事

Return to page top