Разработка Android: Как использовать onKeyUp?
Я новичок в разработке Android, и я не могу найти хорошее руководство по использованию onKeyUp
слушатель.
в моем приложении, у меня есть большая EditText
, когда кто-то нажимает и отпускает клавишу в EditText
Я хочу вызвать функцию, которая будет выполнять регулярные выражения в этом EditText
.
Я не знаю, как я буду использовать onKeyUp. Кто-нибудь может показать мне, как?
5 ответов
самый правильный способ-использовать класс 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);
устранение:
некоторое время я использовал общий onKeyListener. Вскоре я обнаружил, что мой код вызывается дважды. Один раз с ключом вниз и один раз вверх. Теперь я использую следующий прослушиватель и вызываю код только один раз.
"if (event.getAction() == KeyEvent.ACTION_UP)"
- это ключ.
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;
}
};
я нашел это onKeyUp()
вызывается автоматически для каждого элемента управления в деятельности. Если это то, что вы хотите, добавьте его в действие так же, как вы добавляете onCreate()
пример:
public boolean onKeyUp(int keyCode, KeyEvent event) {
//do something here
return false;
};
Я знаю, это старый вопрос, но, возможно, это поможет другим с такой же проблемой.
вы можете использовать следующий код:
@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);
} }
здесь в конце концов мы назвали Супер.способ метода onkeyup. Который обрабатывает событие, когда пользователь не нажимает на ключ.
для более подробной информации вы можете рассмотреть следующие ссылке.
на EditText
. его достичь . Нет необходимости в onKeyUp()
. Потому что это будет выполняться с помощью события click/Touch. правильно? Просто сделай это.
edittext_object.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//do what you need
}
}
пишу это из моей головы, но это должно быть одним из следующих строк:
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);
}
});