Pregunta

Quiero una cierta funcionalidad cuando se pulsa la tecla Intro en un botón. Cuando puedo reemplazar OnKey (), escribo el código a ser ejecutado por KEY_ENTER. Esto funciona muy bien.

setupButton.setOnKeyListener(new OnKeyListener() {
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if (KeyEvent.KEYCODE_ENTER == keyCode)
                {
                    Intent setupIntent = new Intent(getApplicationContext(),SetUp.class);
                    startActivityForResult(setupIntent, RESULT_OK);
                }
                return true;
            }
        });

Pero hay otras teclas funcionan para el botón de ahora como el Arriba, Abajo teclas de flecha, etc. Sé que esto es porque he anulado la OnKey () por sólo ENTER.

Pero, ¿hay alguna manera de conservar la funcionalidad de todas las demás teclas y anular sólo para algunas teclas específicas?

Nota: Todo esto es porque mi onClick () no se llama cuando se presiona la tecla Enter. Por lo tanto, necesito anular OnKey () en sí.

- Kiki

¿Fue útil?

Solución

Cuando regresa cierto en la función, que le dice a Android que están manejando todas las claves, no sólo la tecla Intro.

Usted debe devolver verdadero sólo al final, dentro de la sentencia if y el retorno falsa al final de la función.

setupButton.setOnKeyListener(new OnKeyListener() {
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (KeyEvent.KEYCODE_ENTER == keyCode)
            {
                Intent setupIntent = new Intent(getApplicationContext(),SetUp.class);
                startActivityForResult(setupIntent, RESULT_OK);
                return true;
            }
            return false;
        }
    });
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top