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