Estoy tratando de atrapar el botón atrás evento para Android. Sé que hay mucho sobre esto ya en las formas, sin embargo, mi código no funciona como los ejemplos dados. Aquí está mi fragmento de código para capturar el evento:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event){
    if(keyCode == KeyEvent.KEYCODE_BACK){
        Log.d(TAG, "back key captured");
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

También probé esto:

@Override
public void onBackPressed(){
    Log.d(TAG, "in onBackPressed");
    finish();
}

La salida del LogCat que uno de los eventos despidieron no se muestra. Alguien sabe una posible razón para esto?

Gracias.

Empiece por la adición de un registro antes de la prueba para asegurarse de que usted vaya en el método. Si no, asegúrese de que su punto de Vista es el que actualmente tiene el foco. Si no es así, no va a obtener el onKey eventos.
En el primer ejemplo, al pulsar el botón atrás, ¿el comportamiento predeterminado ocurrir?

OriginalEl autor coder | 2011-11-16

6 Comentarios

  1. 16

    Otro método consiste en reemplazar la public void onBackPressed() método. Es más sencillo y más fácil de hacer.

    hmmm yo sólo probé y no funcionó. Véase mi edición.
    De verdad? Eso es muy extraño, usted está haciendo esto a partir de una Actividad ordinaria y nada se está mostrando en todo? Tal vez trate de hacer es mostrar un brindis cuando se pulsa el botón atrás sólo para corroborar que el depurador no tener problemas.

    OriginalEl autor Brian

  2. 8

    Para recibir un evento de teclado, una Visión que debe tener el foco. A fuerza de este uso:

    view.setFocusableInTouchMode(True);
    view.requestFocus();

    OriginalEl autor Mohamed_AbdAllah

  3. 2

    Es el teclado de pantalla que muestra? Que la vista de la captura de la parte de atrás clave para descartarla antes de que su propio código puede manejar.

    En realidad estoy tratando de usar la tecla atrás para despedir propio teclado personalizados
    forma tardía, pero para cualquier otra persona que se tropieza en esta pregunta, stackoverflow.com/questions/3940127/… puede ser muy útil en caso de que el estándar de la Actividad#onBackPressed (), el método no funciona.

    OriginalEl autor qix

  4. 1

    Esto funciona para mí

    private long lastBackPressTime = 0;
        @Override
    public void onBackPressed() {
        if (this.lastBackPressTime < System.currentTimeMillis() - 4000) {
            Toast.makeText(this, R.string.backButtonWarning, 4000).show();
            this.lastBackPressTime = System.currentTimeMillis();
        } else {
            super.onBackPressed();
        }
    }

    Últimamente iv’e estado experimentando una ENORME cantidad de problemas debido a que el ADT plugin, que haces generar te apropiadas archivo de recursos (R). Así que revise usted ha Limpiado su proyecto

    OriginalEl autor dinigo

  5. 1

    Mi situación puede ser inusual, pero yo tenía exactamente el mismo comportamiento, así que pensé en compartir con la clase! La razón por la que terminó siendo que dentro de mi onResume() el evento para la Actividad, me estaba empezando a otra actividad. Que la actividad era el fin en sí mismo que nunca muestra ninguna interfaz de usuario, pero eso significaba que el «onResume» para mi actividad principal era continuamente se llama cada vez que el sub-actividad terminado, y el botón atrás eventos de todo pareció desaparecer en la sub-actividad.

    OriginalEl autor Chris Rae

  6. -1

    He aquí cómo se implementa el manejo de la parte de atrás-evento de pulsación de tecla.

    /**
       * onKeyDown method
       * 
       * Executes code depending on what keyCode is pressed.
       * 
       * @param int keyCode
       * @param KeyEvent
       *          event KeyEvent object
       * 
       * @return true if the code completes execution, false otherwise
       * 
       */
      @Override
      public boolean onKeyDown(int keyCode, KeyEvent event) {        
        switch (keyCode) {
        case KeyEvent.KEYCODE_BACK:
          Log.d(TAG, "back key captured");
    
          this.onBackPressed();
    
          //You could also use this.moveTaskToBack(true) to return to the Home screen
    
          return true;
    
        default:
          return super.onKeyDown(keyCode, event);
        }
      }//end onKeyDown

    OriginalEl autor Bryan

Dejar respuesta

Please enter your comment!
Please enter your name here