onKeyDown()和onBackPressed()之间的区别

3
我对onKeyDown()onBackPressed()的使用感到困惑。这两种重写方法在功能和用法上是否相同?如果不是,那么两者的正确用法是什么?
您可能会参考这个问题here,它询问了实现的位置,但我想问的是为什么和何时而不是在哪里。

@Hexfire 先生!!您已将其标记为重复,参考了这里的问题,该问题询问实现的位置,但我正在询问为什么和何时,而不是在哪里。 - Muahmmad Tayyib
@xamMTS 我撤回了标记。 - Hexfire
1个回答

12

onKeyDown() 可以用于您的 Android 设备上的任何硬件键,例如电源按钮、返回按钮或音量按钮。

onBackPressed() 仅在按下返回按钮时调用。

以下是它们的区别:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        // back was pressed
        return true;
    } else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
      // volume up was pressed
    }
    return super.onKeyDown(keyCode, event);
}

@Override
public void onBackPressed() {
    // back was pressed
}

在这里可以查看完整的 KeyCode 列表:

https://developer.android.com/reference/android/view/KeyEvent.html

正如您所看到的,如果您想检测后退按钮的按下,则实现 onBackPressed() 更容易。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接