- 2012-09-09 (日) 17:09
- Android
Androidの戻るボタンが押されると、既定では表示中のアクティビティが閉じられます。
しかし、アプリによってはボタンが押されたタイミングで何かしらの処理を行ったり、無効にしたいこともあるかと思います。
Backボタン押下時に任意処理を実装するための大まかな流れは次のとおりです。
- Activity#onKeyDown() をオーバーライド
- 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] メニュー処理
- [Android] タッチイベント処理
- [Android] マルチスレッド(その1)
- [Android] ボタンの見た目をカスタマイズ
- [WPF] 未処理例外をキャッチ
- Newer: [Android] FTPクライアントの実装
- Older: [Java] 小数の切り捨て、切り上げ、四捨五入
Comments:0
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 ミライニトドケ