我是Android开发的新手,似乎找不到一个好的指南来指导我如何使用onKeyUp监听器。
在我的应用程序中,我有一个很大的EditText,当有人在该EditText中按下并释放一个键时,我想调用一个函数,该函数将在该EditText中执行正则表达式。
我不知道我该怎么用onKeyUp。有没有人可以教我怎么做?
发布于 2011-08-27 04:12:18
最正确的方法是使用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);发布于 2011-02-19 01:05:24
更正:
有一段时间,我使用了通用的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;
};我知道这是一个老生常谈的问题,但也许这会对其他人解决同样的问题有所帮助。
发布于 2016-07-16 23:24:24
您可以考虑使用以下代码:
@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);
} }在这里,我们最终调用了super.onkeyUp方法。它处理用户未按下有效键时的事件。
有关更多详细信息,您可以考虑使用link。
https://stackoverflow.com/questions/3741147
复制相似问题