問題發現:
測試人員在點擊搜索框,在不輸入任何搜索條件的情況下,點擊軟鍵盤右下角搜索按鍵,出現報錯
java.lang.IllegalStateException: focus search returned a view that wasn't able to take focus
問題原因:
EditText的setOnKeyListener()監聽最后return為 false;
錯誤的解決辦法:
把return false 改為return true;
etSearchTitle.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View view, int i, KeyEvent keyEvent) { if (i == KeyEvent.KEYCODE_ENTER && keyEvent.getAction() == KeyEvent.ACTION_DOWN) { //點擊軟鍵盤搜索 Editable editable = etSearchTitle.getText(); int len = editable.length(); if (len > 0) { } else { } } //return false; return true; } });
在這樣暴力的直接把false 改為true時,當你EditText輸入完內容,想撤銷自己輸入的內容時,點擊軟鍵盤的撤銷鍵是不好用的。
因此,再次進行更改
最終的解決辦法:
etSearchTitle.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View view, int i, KeyEvent keyEvent) { if (i == KeyEvent.KEYCODE_ENTER) { if (!StringUtils.isNullOrEmpty(etSearchTitle.getText().toString().trim())) { //此方法是判讀EditText的輸入框內是否有數據 if (keyEvent.getAction() == KeyEvent.ACTION_DOWN) { Editable editable = etSearchTitle.getText(); int len = editable.length(); if (len > 0) { } else { } } } else { //在輸入框數據為空時,返回true
return true; } } return false; } });
