首选哪种方法覆盖onBackPressed?

时间:2013-02-21 14:15:26

标签: android

第一个案例

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

第二种情况

OnBackPressed();

哪种情况最好覆盖backKeypress事件?

4 个答案:

答案 0 :(得分:4)

如果您想要在2.0之前进行背压,可以使用onKeyDown方法,如下所示:

@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首先抓住它。

如果您像我们一样在super.onKeyDown中致电onKeyDown,那么onBackPressed方法将会触发。如果您不致电super.onKeyDown,则永远不会调用onBackPressed

除非您有特定理由将目标定在2.0以下,否则没有太多理由要打扰。

答案 1 :(得分:2)

我认为你应该使用:

    @Override
    public void onBackPressed() {

        //...
    }

以防您只想覆盖一个事件。如果要检测该用户是否物理地单击了后退键,则第一种方法会更好。

答案 2 :(得分:1)

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

如果你正在谈论覆盖这个事件,那么第一个是正确的事情。

答案 3 :(得分:0)

您应该使用:

    @Override
    public void onBackPressed() {

    }