Android – onBackPressed () no funciona

Tengo un edificio de aplicaciones contra Android 2.1 y quiero anular el botón de retroceso.

He seguido el ejemplo aquí:

Http://android-developers.blogspot.com/2009_12_01_archive.html

Y mi código es el siguiente:


@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; } 

Funciona en dispositivos pre 2.x pero no funciona en un héroe con 2.1 update-1 y un Nexus One con 2.2.

¿Hay algo que me falta en el ejemplo? ¿O alguien puede indicar por qué no funciona?

Ni siquiera logro pulsar el botón en el logcat.

¿Está usando onKeyUp () ?

Use sólo onKeyDown () en Android 1.x o enBackPressed () en Android 2.x

Algunas búsquedas rápidas sugieren que debe colocar la interceptación de Back durante onKeyUp (): http://developer.android.com/sdk/android-2.0.html . Vale la pena intentarlo. El código siguiente es directamente del sitio:

 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); } 

Debe llamar a los constructores de padres.

En la llamada al método onKeyDown()

 super.onKeyDown(); 

Y en onBackPressed()

 super.onBackPressed(); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.