EditText中onEditorAction監聽事件執行兩次

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章