studio event edittext java android onkeyup

java - event - Desarrollo de Android: ¿Cómo usar onKeyUp?



keypress android (5)

CORRECCIÓN:

Por un tiempo, usé un onKeyListener genérico. Pronto descubrí que mi código estaba siendo llamado dos veces. Una vez con la tecla abajo y una vez con la tecla arriba. Ahora uso el siguiente oyente y solo llamo el código una vez. "if (event.getAction() == KeyEvent.ACTION_UP)" es la clave.

OnKeyListener keyListener = new OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_UP) { //do something here } return false; } };

Descubrí que se llama a onKeyUp() automáticamente para cada control en la Actividad. Si esto es lo que desea, agréguelo a la Actividad tal como agrega el onCreate()

Ejemplo:

public boolean onKeyUp(int keyCode, KeyEvent event) { //do something here return false; };

Sé que esta es una pregunta antigua, pero tal vez esto ayude a otros con el mismo problema.

Soy nuevo en el desarrollo de Android y parece que no puedo encontrar una buena guía sobre cómo usar un oyente onKeyUp .

En mi aplicación, tengo un gran EditText , cuando alguien presiona y suelta una tecla en ese EditText quiero llamar a una función que realizará expresiones regulares en ese EditText .

No sé cómo usaría el onKeyUp. ¿Podría alguien mostrarme cómo?


Escribiendo esto de mi cabeza pero debería estar entre las siguientes líneas:

text.setKeyListener(new KeyListener() { @Override public boolean onKeyUp(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_0) dosomething // pick the custom key from keyEvent return super.onKeyUp(keyCode, event); } });


La forma más correcta es usar la clase TextWatcher.

EditText tv_filter = (EditText) findViewById(R.id.filter); TextWatcher fieldValidatorTextWatcher = new TextWatcher() { @Override public void afterTextChanged(Editable s) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if (filterLongEnough()) { populateList(); } } private boolean filterLongEnough() { return tv_filter.getText().toString().trim().length() > 2; } }; tv_filter.addTextChangedListener(fieldValidatorTextWatcher);


Puedes considerar usar el siguiente código:

@Override public boolean onKeyUp(int keyCode, KeyEvent event) { switch (keyCode) { ... case KeyEvent.KEYCODE_J: if (event.isShiftPressed()) { fireLaser(); } else { fireMachineGun(); } return true; case KeyEvent.KEYCODE_K: if (event.isShiftPressed()) { fireSeekingMissle(); } else { fireMissile(); } return true; default: return super.onKeyUp(keyCode, event); } }

Aquí al final hemos llamado al método super.onkeyUp. Que maneja el evento cuando el usuario no presiona la tecla válida.

Para más detalles puedes considerar el siguiente link .


Sólo para un EditText . su lograr por setOnClickListener() sí. No es necesario para el onKeyUp() . Porque eso se realizará mediante un clic / Evento táctil. ¿Correcto? Sólo haz esto.

edittext_object.setOnClickListener(new OnClickListener() { public void onClick(View v) { //do what you need } }