onKeyDown() 和 onBackPressed() 的区别
Difference between onKeyDown() and onBackPressed()
我对 onKeyDown()
和 onBackPressed()
的用法感到困惑。
这两种覆盖方法在功能和用法上是否相同?
如果不是这样,那么两者的正确用法是什么?
您可能指的是这个问题 here,它询问实施地点,但我问的是为什么和何时,而不是在哪里。
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()
更容易实现。
我对 onKeyDown()
和 onBackPressed()
的用法感到困惑。
这两种覆盖方法在功能和用法上是否相同?
如果不是这样,那么两者的正确用法是什么?
您可能指的是这个问题 here,它询问实施地点,但我问的是为什么和何时,而不是在哪里。
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()
更容易实现。