2

第一个案例

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

第二种情况

OnBackPressed();

哪种情况更好地覆盖 backKeypress 事件?

4

4 回答 4

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的那样调用,那么该方法将触发。如果您不调用,则永远不会被调用。 onKeyDownonBackPressedsuper.onKeyDownonBackPressed

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

于 2013-02-21T14:29:51.307 回答
2

我认为你应该使用:

    @Override
    public void onBackPressed() {

        //...
    }

以防您只想覆盖事件。如果您想检测用户物理单击返回键,第一种方法会更好。

于 2013-02-21T14:19:55.823 回答
1
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {

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

于 2013-02-21T14:26:07.940 回答
0

你应该使用:

    @Override
    public void onBackPressed() {

    }
于 2013-02-21T14:23:57.773 回答