19

我有两个活动 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);
4

5 回答 5

45
@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开发者自己编写的关于如何处理返回键事件的详细说明:

使用返回键

于 2010-04-07T11:58:16.503 回答
29

对于 Android 2.0 及更高版本,Activity 类中有一个特定的方法:

@Override  
public void onBackPressed() {
    super.onBackPressed();   
    // Do extra stuff here
}
于 2010-04-07T12:19:40.890 回答
2
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(keyCode == KeyEvent.KEYCODE_BACK){
        //Do stuff
    }

    return super.onKeyDown(keyCode, event);
}
于 2010-04-07T11:50:14.163 回答
0

可以在此处找到有关后退键内容的更多信息:http ://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html

于 2010-04-07T14:13:40.770 回答
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
}
于 2010-07-18T15:57:14.013 回答