我是Android新手,我似乎無法找到一個關於如何使用onKeyUp
聽衆的好指南。Android開發:如何使用onKeyUp?
在我的應用程序中,我有一個很大的EditText
,當有人按下並釋放該EditText
中的一個鍵時,我想調用一個函數,該函數將在該EditText
中執行正則表達式。
我不知道如何使用onKeyUp。有人能告訴我如何?
我是Android新手,我似乎無法找到一個關於如何使用onKeyUp
聽衆的好指南。Android開發:如何使用onKeyUp?
在我的應用程序中,我有一個很大的EditText
,當有人按下並釋放該EditText
中的一個鍵時,我想調用一個函數,該函數將在該EditText
中執行正則表達式。
我不知道如何使用onKeyUp。有人能告訴我如何?
非常正確的方法是使用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);
只爲EditText
。其本身通過setOnClickListener()
來實現。無需onKeyUp()
。因爲這將通過點擊/觸摸事件來執行。對?只要做到這一點。
edittext_object.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//do what you need
}
}
他可能想在onkeyup中做些什麼, – 2011-07-24 11:13:37
寫這從我的頭,但它應該是以下行中:
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);
}
});
更正:
有一段時間,我使用的通用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()
是在Activity中爲每個控件自動調用的。如果這是你想要的東西,把它添加到活動就像你添加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);
} }
這裏到底我們稱之爲super.onkeyUp方法。當用戶沒有按下有效的鍵時處理事件。
欲瞭解更多詳情,你可能需要考慮以下link。
謝謝,我已經在幾年前遇到過TextWatcher類。一定忘記標記正確答案,遺憾浪費你的時間! – AlexPriceAP 2011-08-27 20:16:29