代码如下
private int num = 0; // 输入法回车键点击判断
...省略代码...
/**
* 使键盘上的回车按钮实现搜索功能
*/
mEdtSearch.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
num++;
if (actionId == EditorInfo.IME_ACTION_SEARCH
|| (event != null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
if (num == 2) {
String search = mEdtSearch.getText().toString().trim();
if ("".equals(search)) {
mBtnSearch.setClickable(false);
Toast.makeText(SearchActivity.this, "请输入关键字", Toast.LENGTH_SHORT).show();
num = 0;
} else {
mBtnSearch.setClickable(true);
Intent intent = new Intent(SearchActivity.this, SearchResultActivity.class);
intent.putExtra(Constants.INTENT_EXTRA_ID, search);
intent.putExtra("selectedId", selectedId);
intent.putExtra("navType", navType);
startActivityForResult(intent, 0);
InputDataToDb(search);
num = 0;
}
}
return true;
}
return false;
}
});
我在看的时候,很有问题?为何判断的是if (num == 2),然后debug后发现,如果按输入法的回车键,会调用两次监听,第二次满足条件执行。