Android的EditText通過setOnEditorActionListener給文本編輯框設置監聽事件,但是在其處理方法onEditorAction中的邏輯在每次回車後都觸發了兩次,原來是在鍵盤迴車的ACTION_UP和ACTION_DOWN時都會觸發這個方法,因此修改代碼如下,就防止了兩次執行:
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
//以下方法防止兩次發送請求
if (actionId == EditorInfo.IME_ACTION_SEND ||
(event != null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
switch (event.getAction()) {
case KeyEvent.ACTION_UP:
//發送請求
String keyWord = et_search.getText().toString().trim();
if (null == keyWord)
keyWord = "";
dismisspopup();
LogUtils.d("向服務器發送搜索請求:" + keyWord);
//發起查詢
searchByKeyWord(keyWord);
hideSoftInput();
return true;
default:
return true;
}
}
return false;
}