第一个案例
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
第二种情况
OnBackPressed();
哪种情况更好地覆盖 backKeypress 事件?
第一个案例
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
第二种情况
OnBackPressed();
哪种情况更好地覆盖 backKeypress 事件?
如果你想在 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 以下,否则没有太多理由打扰。
我认为你应该使用:
@Override
public void onBackPressed() {
//...
}
以防您只想覆盖事件。如果您想检测用户物理单击返回键,第一种方法会更好。
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
如果您正在谈论覆盖此事件,则第一个是正确的实现方式。
你应该使用:
@Override
public void onBackPressed() {
}