我有两个活动A和B.当我点击A中的按钮时会显示B.当我点击B中的按钮时它返回到A.我在finish()方法之后设置了overridePendingTransition方法。它工作正常。但是如果当前活动是B.那么我单击设备中的默认后退按钮。它显示了从右到左的过渡以显示活动A.
我如何在设备上收听默认后退键?
修改
Log.v(TAG, "back pressed");
finish();
overridePendingTransition(R.anim.slide_top_to_bottom, R.anim.hold);
答案 0 :(得分:40)
@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开发人员自己编写的返回键事件:
答案 1 :(得分:26)
对于Android 2.0及更高版本,Activity类中有一个特定的方法:
@Override
public void onBackPressed() {
super.onBackPressed();
// Do extra stuff here
}
答案 2 :(得分:2)
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){
//Do stuff
}
return super.onKeyDown(keyCode, event);
}
答案 3 :(得分:0)
有关背键的更多信息,请访问:http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html
答案 4 :(得分:0)
我在使用媒体播放器的活动中使用此代码。我需要在用户按下后退按钮时停止播放,但仍然可以返回上一个活动。
@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
}