Android: ¿cómo obtener algún evento de KeyPress con ejemplo?
Quiero obtener el valor clave cuando el usuario presiona cualquier tecla y también realizar la acción basada en la tecla presionada en android.
Por ejemplo, si el usuario pulsó la tecla "A", entonces quiero obtener ese valor, comparar, hacer algo.
- ¿Cómo puedo cambiar el texto de EditText sin activar el Text Watcher?
- Manejo de un elemento de menú Haga clic en Evento - Android
- Implementar múltiples oyentes de eventos en el mismo fragmento - Android
- Detectar evento de desplazamiento en el navegador de Android
- ¿Cómo es posible contar el número de mensajes en cola en un Handler?
- Android - Cómo configurar un método con nombre en button.setOnClickListener ()
- Prácticas recomendadas para la implementación de Android onClickListener
- Crear un controlador personalizado de finalización / devolución de llamada para devolver objetos después de que se completa una solicitud HTTP
- Android: maneja eventos de teclado virtual y físico
- Cómo mantener DropDownList de AutoCompleteTextView abierto después de presionar la tecla Atrás?
- OnTouch en MapView sólo se dispara la primera vez
- Android: Añade escuchas de eventos a cada elemento de un ListView
- El evento LongClick ocurre demasiado rápido. ¿Cómo puedo aumentar el tiempo de clic requerido para activarlo?
La respuesta a esta pregunta debe ser doble. Se determina por la forma en que se generó la clave. Si se pulsa la tecla de hardware, ambos métodos descritos a continuación son válidos. Si se pulsa en la tecla de software, entonces depende del contexto real.
1.) Si la tecla era el resultado de presionar en el teclado suave que se obtuvo presionando largo sobre la tecla Menú:
Debe anular cuidadosamente la siguiente función:
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_A: { //your Action code return true; } } return super.onKeyDown(keyCode, event); }
2.) Si su actividad contiene EditText y softkeyboard se obtuvo de él, entonces el primer enfoque no funciona porque el evento clave ya se consumió por EditText. Necesita usar el texto modificado Listener:
mMyEditText.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable s) { } public void beforeTextChanged(CharSequence s, int start, int count, int after) { /*This method is called to notify you that, within s, the count characters beginning at start are about to be replaced by new text with length after. It is an error to attempt to make changes to s from this callback.*/ } public void onTextChanged(CharSequence s, int start, int before, int count) { } );
El código de Zelimir funciona si su versión de ssoo es hasta 2.3 Si usted tiene este código funcionando en 2.3 no funcionará en absoluto, la manera de controlar las llaves del acontecimiento en toda la versión del ssoo está con el dispatchKeyEvent ()
@Override public boolean dispatchKeyEvent(KeyEvent event) { Log.d("hello", String.valueOf(event.getKeyCode())); return super.dispatchKeyEvent(event); }
Con esto, puede controlar la tecla pulsada en una vista web o donde quiera que se encuentre. El único error es que no se puede controlar el "botón de acción" … no sé por qué.
Pruebe esto, esto funciona perfectamente bien.
@Override public boolean onKeyUp (int keyCode, KeyEvent event){ char c = (char) event.getUnicodeChar(); //Do something.... return super.onKeyUp(keyCode, event); }
- Cómo insertar ImageView al final de multilínea TextView?
- ¿Cómo puedo forzar el método onPrepareOptionsMenu para disparar?