Android 首选哪种方法覆盖onBackPressed?
第一例Android 首选哪种方法覆盖onBackPressed?,android,Android,第一例 public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { OnBackPressed(); 第二种情况 public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { OnBackPressed(); 哪种
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
OnBackPressed();
第二种情况
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
OnBackPressed();
哪种情况更适合覆盖backKeypress事件?我认为您应该使用:
@Override
public void onBackPressed() {
//...
}
@Override
public void onBackPressed() {
}
如果您只是想覆盖一个事件。如果要检测用户实际单击的后退键,第一种方法更好。您应该使用:
@Override
public void onBackPressed() {
//...
}
@Override
public void onBackPressed() {
}
如果您正在谈论覆盖此事件,则第一个事件是正确的实施方式。如果您想在2.0之前抓住后退按钮,可以使用如下方法:
@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
如果您像上面那样在onKeyDown
中调用super.onKeyDown
,那么onBackPressed
方法将启动。如果不调用super.onKeyDown
,则永远不会调用onBackPressed
除非你有特定的理由将目标设定在2.0以下,否则没有太多的理由麻烦。不要提供重复的答案。啊,看来我们是在同一时间输入的,我的错。不过,我的回答更自信一点:p主要区别在于onKeyDown是从API 1开始的,而OnBackPressed是从API 5开始的。复制相关部分并不难。我只是展示两者之间的区别。提供解决方案很容易,但很多答案都没有提供哪一个更好用。你在反驳显而易见的事实。人们**只是**在说哪个更好用。我想说的是,你只是把一个简短的文章摘要的链接扔了。链接的站点可能会脱机,因此您的答案将毫无意义。因此,最好重复要点,并为将来的信息提供参考。对于第二种方法--“万一您只是想覆盖一个事件”?对于第一种方法,如果我们想检测用户是否单击了返回键。。这是否意味着我们可以在不实际单击back键的情况下触发此“backpress事件”?是的,您可以调用onBackPressed();