Pregunta

Estoy trabajando en una aplicación de Android y tengo una vista con 3 edittexts. Lo que estoy tratando de lograr es que en una tecla numérica que se presione en la última debería llamar al evento Okkey para esa actividad. El problema es que para EditText en el que configure el OnKeylistener, ni los métodos de getText ni SetText funcionan. Permítame explicarme:

Supongamos que inicializo una cadena vacía

String string1 = "";

En mi método OnCreate, configuré el OnKeylistener en uno de los editTexts

@Override
public void onCreate(Bundle savedInstanceState) {
    ...
    findViewById(R.id.EditText3).setOnKeyListener(this);
    ...
}

Ahora, si escribo el siguiente código en el método Okkey primordial

@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
    if (keyCode >= KeyEvent.KEYCODE_0 && keyCode <= KeyEvent.KEYCODE_9) {
        string1 += ((EditText) findViewById(R.id.EditText1)).getText();
        string1 += ((EditText) findViewById(R.id.EditText2)).getText();
        string1 += ((EditText) findViewById(R.id.EditText3)).getText();

        ((EditText) findViewById(R.id.EditText1)).setText("");
        ((EditText) findViewById(R.id.EditText2)).setText("");
        ((EditText) findViewById(R.id.EditText3)).setText("");
    }
return false;
}

Solo EditText1 y EditText2 se borran y el texto en EditText3 no se concatena en String1. Si reemplazo la condición de la instrucción if con

if (keyCode == KeyEvent.KEYCODE_ENTER)

Luego, al presionar la tecla ENTER (establecida como siguiente), funciona como se esperaba. Intenté agregar el setText ("") en el método OnResume de la actividad también pero sin diferencias en el resultado. ¡Aprecio el tiempo que tomó para leer mi pregunta!

Editado: agregó el "return false;" Al final del método Onkey, lo tuve en mi trabajo, pero me perdí en esta pregunta, recordó la respuesta de Chris.

¿Fue útil?

Solución

Además de la respuesta de Chris, se debe agregar un cheque para asegurar que Event.getAction () sea igual a KeyVent.Action_UP; Onkey se llama dos veces, y si getAction () es Action_down (la primera vez que se llama el método), el personaje aún no se habrá agregado a la característica devuelta por getText ().

Otros consejos

Cuando establezca el OnKeyRener su editText3, reemplaza lo que sucede cuando presiona una llave con eso. Probar return false; Al final del OnKey. Esto debería pasar el valor a la ubicación adecuada.

http://developer.android.com/reference/android/view/view.onkeylistener.html

Devoluciones

Es cierto que si el oyente ha consumido el evento, falso de lo contrario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top