AとBの2つのアクティビティがあります。Aのボタンをクリックすると、Bが表示されます。Bのボタンをクリックすると、Aに戻ります。finish()メソッドの後にoverridePendingTransitionメソッドを設定しました。正常に動作します。しかし、現在のアクティビティがBの場合は、そのときにデバイスのデフォルトの戻るボタンをクリックします。アクティビティAを示すために、右から左への遷移を示しています。
デバイスでそのデフォルトのバックキーを聞くにはどうすればよいですか?
編集:
Log.v(TAG, "back pressed");
finish();
overridePendingTransition(R.anim.slide_top_to_bottom, R.anim.hold);
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
// do something on back.
return true;
}
return super.onKeyDown(keyCode, event);
}
次のリンクは、Android開発者自身が作成した、キーイベントの処理方法に関する詳細な説明です。
Android 2.0以降では、Activityクラスに特定のメソッドがあります:
@Override
public void onBackPressed() {
super.onBackPressed();
// Do extra stuff here
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){
//Do stuff
}
return super.onKeyDown(keyCode, event);
}
バックキーの詳細については、こちらをご覧ください http://Android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html
このコードは、メディアプレーヤーでのアクティビティで使用します。ユーザーが戻るボタンを押したときに再生を停止する必要がありましたが、それでも前のアクティビティに戻ることができました。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
// do something on back.
try{
mp.stop(); //this line stops the player
return super.onKeyDown(keyCode, event);//this line does the rest
}
catch(IllegalStateException e){
e.printStackTrace();
}
return true;
}
return super.onKeyDown(keyCode, event); //handles other keys
}