Android 首选哪种方法覆盖onBackPressed?

Android 首选哪种方法覆盖onBackPressed?,android,Android,第一例 public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { OnBackPressed(); 第二种情况 public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { OnBackPressed(); 哪种

第一例

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
OnBackPressed();
第二种情况

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
OnBackPressed();

哪种情况更适合覆盖backKeypress事件?

我认为您应该使用:

    @Override
    public void onBackPressed() {

        //...
    }
    @Override
    public void onBackPressed() {

    }
如果您只是想覆盖一个事件。如果要检测用户实际单击的后退键,第一种方法更好。

您应该使用:

    @Override
    public void onBackPressed() {

        //...
    }
    @Override
    public void onBackPressed() {

    }

如果您正在谈论覆盖此事件,则第一个事件是正确的实施方式。

如果您想在2.0之前抓住后退按钮,可以使用如下方法:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        //Do something on back press
    }
    return super.onKeyDown(keyCode, event);
}
有趣的是,如果您同时覆盖了onBackPressed和onKeyDown,那么这两个选项都将首先捕捉到onKeyDown

如果您像上面那样在
onKeyDown
中调用
super.onKeyDown
,那么
onBackPressed
方法将启动。如果不调用
super.onKeyDown
,则永远不会调用
onBackPressed


除非你有特定的理由将目标设定在2.0以下,否则没有太多的理由麻烦。

不要提供重复的答案。啊,看来我们是在同一时间输入的,我的错。不过,我的回答更自信一点:p主要区别在于onKeyDown是从API 1开始的,而OnBackPressed是从API 5开始的。复制相关部分并不难。我只是展示两者之间的区别。提供解决方案很容易,但很多答案都没有提供哪一个更好用。你在反驳显而易见的事实。人们**只是**在说哪个更好用。我想说的是,你只是把一个简短的文章摘要的链接扔了。链接的站点可能会脱机,因此您的答案将毫无意义。因此,最好重复要点,并为将来的信息提供参考。对于第二种方法--“万一您只是想覆盖一个事件”?对于第一种方法,如果我们想检测用户是否单击了返回键。。这是否意味着我们可以在不实际单击back键的情况下触发此“backpress事件”?是的,您可以调用onBackPressed();