Android - onBackPressed() 不工作
我有一个针对 Android 2.1 构建的应用程序,我想覆盖后退按钮。
我按照这里的示例:
http://android-developers.blogspot.com/2009_12_01_archive.html< /a>
我的代码如下:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (Integer.parseInt(android.os.Build.VERSION.SDK) < 5
&& keyCode == KeyEvent.KEYCODE_BACK
&& event.getRepeatCount() == 0) {
Log.d("CDA", "onKeyDown Called");
onBackPressed();
}
return true;
}
@Override
public void onBackPressed() {
Log.d("CDA", "onBackPressed Called");
Intent setIntent = new Intent(Intent.ACTION_MAIN);
setIntent.addCategory(Intent.CATEGORY_HOME);
setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(setIntent);
return;
}
它适用于 2.x 之前的设备,但不适用于 2.1 update-1 的 Hero 和 2.2 的 Nexus One。
我在这个例子中遗漏了什么吗?或者谁能指出为什么它不起作用?
我什至没有在 logcat 中按下按钮。
I have an application building against Android 2.1 and I want to override the back button.
I have followed the example here:
http://android-developers.blogspot.com/2009_12_01_archive.html
And my code is as follows:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (Integer.parseInt(android.os.Build.VERSION.SDK) < 5
&& keyCode == KeyEvent.KEYCODE_BACK
&& event.getRepeatCount() == 0) {
Log.d("CDA", "onKeyDown Called");
onBackPressed();
}
return true;
}
@Override
public void onBackPressed() {
Log.d("CDA", "onBackPressed Called");
Intent setIntent = new Intent(Intent.ACTION_MAIN);
setIntent.addCategory(Intent.CATEGORY_HOME);
setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(setIntent);
return;
}
It works on pre 2.x devices but doesn't work on a Hero with 2.1 update-1 and a Nexus One with 2.2.
Is there somwthing I am missing from the example? Or can anyone point out why it isn't working?
I dont even get the button pressed in the logcat.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您使用的是onKeyUp()吗?
在 Android 1.x 中仅使用 onKeyDown() 或在 Android 2.x 中使用 onBackPressed()
Are you using onKeyUp()?
Use just onKeyDown() in Android 1.x or onBackPressed() in Android 2.x
一些快速搜索建议您应该在 onKeyUp() 期间放置 Back 拦截: http://developer .android.com/sdk/android-2.0.html。值得一试。
以下代码直接来自网站:
Some quick searching suggests you should place the Back intercept during onKeyUp(): http://developer.android.com/sdk/android-2.0.html. It's worth a try.
The following code is directly from the site:
您应该调用父构造函数。
在
onKeyDown()
方法调用和
onBackPressed()
中You should call parent constructors.
In
onKeyDown()
method calland in
onBackPressed()