KeyPress事件仅触发MonoDroid中的某些键

时间:2012-02-29 21:53:59

标签: c# xamarin.android keyboard-events

我有一个提供搜索建议的自定义搜索活动。我得到了对搜索输入框的引用并设置了一个处理程序:

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以确定当前是否触发事件。

1 个答案:

答案 0 :(得分:0)

什么时候没有开火?如果是在用户键入时,则可以使用TextChanged事件。然后,您可以继续使用OnKey方法实现。

另外,请查看本文的“搜索”按钮:

http://www.stackoverflow.com/questions/1489852/android-handle-enter-in-an-edittext