El cuadro de diálogo se muestra dos veces cuando se pulsa de nuevo

En el código, el diálogo se muestra dos veces cuando presiono el botón de retroceso. ¿Puede alguien por favor decirme cómo obtener el diálogo sólo una vez?

public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK)) { onBackPressed(); } return super.onKeyDown(keyCode, event); } public void onBackPressed() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("Do you want to save configuration?"); builder.setPositiveButton ("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { //here saveConfiguration is boolean type if (saveConfiguration()) { dialog.dismiss(); finish(); } else { dialog.dismiss(); } } }); builder.setNegativeButton("No", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.dismiss(); finish(); } }); builder.show(); } } 

Su diálogo viene dos veces porque está consumiendo dos eventos desde la tecla de retroceso, es decir, la tecla hacia abajo y la tecla hacia arriba .. restringir a cualquiera de ellos.

  if (event.getAction() != KeyEvent.ACTION_DOWN) { /* Now call onBackPressed method here */ } 

OnBackPressed () es un método de actividad estándar

Lo que estás haciendo, está llamando a este método de onKeyDown manualmente, y luego llamarlo de nuevo por evento delegataing más a través de super.onKeyDown (keyCode, evento) (que registra, que presionó de nuevo y llama a onBackPressed () automáticamente);

Si desea trabajar con el evento de tecla back pressed, thet o bien quitar el método onKeyDown entierly y utilizar sólo onBackPressed (), o cambiar el nombre de su onBackPressed () para ser algo único.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.