问题发现:
测试人员在点击搜索框,在不输入任何搜索条件的情况下,点击软键盘右下角搜索按键,出现报错
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; } });