Android – onBackPressed()不工作
我有一个应用程序构build对Android 2.1,我想重写后退button。
我在这里跟着例子:
http://android-developers.blogspot.com/2009_12_01_archive.html
而我的代码如下:
@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更新-1的英雄和2.2的Nexus One。
我从这个例子中缺less了什么? 或者任何人都可以指出为什么它不工作?
我甚至没有按下logcat中的button。
你在使用onKeyUp()吗?
在Android 2.x中只使用onKeyDown()或在Android 2.x中使用onBackPressed()
一些快速searchbuild议您应该在onKeyUp()期间放置Back拦截: http : //developer.android.com/sdk/android-2.0.html 。 这是值得一试。 以下代码直接来自网站:
public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { event.startTracking(); return true; } return super.onKeyDown(keyCode, event); } public boolean onKeyUp(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.isTracking() && !event.isCanceled()) { // *** DO ACTION HERE *** return true; } return super.onKeyUp(keyCode, event); }
你应该调用父构造函数。
在onKeyDown()
方法中调用
super.onKeyDown();
并在onBackPressed()
super.onBackPressed();