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
}
}