¿cuál es el código para la acción predeterminada del botón 'atrás' en android?

Tengo un edittext y un botón de guardar se muestra. Cuando se pulsa la tecla de retroceso, quiero que desaparezcan (si son visibles) y la próxima presionar de nuevo hará la acción predeterminada del botón de retroceso. El código es el siguiente:

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()) { if(save.isShown()) { save.setVisibility(Button.GONE); text.setVisibility(EditText.GONE); } //else ??????????????? return true; } return super.onKeyUp(keyCode, event); } 

El código anterior tiene los siguientes resultados: 1. cuando edittext y el botón es visible, a continuación, el botón de volver hace que se han ido, pero la prensa siguiente no da nada. Aunque si el botón de retroceso se mantiene presionado, volvemos a la actividad anterior. 2. cuando edittext y el botón no están inicialmente allí, presionando del botón de la parte posterior para la aplicación inesperada. Aunque si el botón trasero se mantiene presionado, volvemos a la actividad anterior.

En el lugar de else, he intentado finish () pero el programa se detiene inesperadamente. return false también resulta igual ..

 @Override public void onBackPressed() { doStuff(); } 

Enlace aquí

Editar

Espera, ¿qué tal una larga prensa? Si estoy leyendo la pregunta original correctamente, ¿quieres que la primera copia atrás oculte algunas vistas y la segunda que se comporte normalmente? ¿Por qué no sólo algo como esto:

 private boolean flag = false; @Override public void onBackPressed() { if(flag) { super.onBackPressed(); } else { view.setVisibility(View.GONE); flag = true; } } 

reemplazar

 if (keyCode == KeyEvent.KEYCODE_BACK && event.isTracking() && !event.isCanceled()) { if(save.isShown()) { 

por

 if (keyCode == KeyEvent.KEYCODE_BACK && event.isTracking() && !event.isCanceled() && save.isShown()) { 
 @Override public void onBackPressed() { myMethod(); super.onBackPressed(); } 

Es muy importante llamar al supermethod cuando reemplazas métodos como este. ¡Ponga cualquier código que usted desea ejecutar antes de la llamada del supermethod y usted debe ser de oro!

EDITAR:

antes de la supercall, no después.

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