我有一个提供搜索建议的自定义搜索活动。我得到了对搜索输入框的引用并设置了一个处理程序:
mSearchInput = FindViewById(Resource.Id.searchBoxInput) as EditText;
mSearchInput.KeyPress += new System.EventHandler<View.KeyEventArgs>(OnSearchKeypress);
这是应该在每次按键时调用的处理程序:
private void OnSearchKeypress(object sender, View.KeyEventArgs e) {
string query = mSearchInput.Text;
if (e.KeyCode == Keycode.Enter && !string.IsNullOrEmpty(query)) {
e.Handled = true;
// launch search results activity
}
else {
e.Handled = false;
if (query.Length > 2) {
// load suggestions if we have 2+ characters
}
}
}
出于某种原因,在软键盘上,只有某些键按下才能触发事件。输入和删除触发事件。字母数字键不会。即使我拿出所有的逻辑并只是用e.KeyCode.ToString()做一个Toast,它只显示那几个键上的toast。
我是在听错事件,这是一个错误,还是我犯了其他错误?
设备:Droid X2 单声道版本:4.0.4
更新:我发现按键每次按下时会触发两次KeyPress:一次是KeyEventActions.Up,一次是Down。这并不能解释为什么只有某些键触发事件,但应该注意你需要检查event.E.Action以确定当前是否触发事件。
答案 0 :(得分:0)
什么时候没有开火?如果是在用户键入时,则可以使用TextChanged事件。然后,您可以继续使用OnKey方法实现。
另外,请查看本文的“搜索”按钮:
http://www.stackoverflow.com/questions/1489852/android-handle-enter-in-an-edittext