Событие KeyPress срабатывает только на определенных клавишах в MonoDroid - PullRequest
3 голосов
/ 01 марта 2012

У меня есть пользовательская поисковая активность, которая служит для поиска предложений.Я получаю ссылку на поле ввода поиска и устанавливаю обработчик:

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 (), он покажет тост только на этих нескольких клавишах.

Слушаю ли я неправильное событие, это ошибка?или я совершил какую-то другую ошибку?

Устройство: Droid X2 Mono Версия: 4.0.4

Обновление: Я обнаружил, что KeyPress запускается дважды при каждом физическом нажатииключа: один раз для KeyEventActions.Up и один раз для Down.Это не объясняет, почему только определенные клавиши запускают событие, но следует отметить, что вам нужно проверить событие. E. Действие, чтобы выяснить, вызывает ли событие в данный момент нажатие или отпуск.

1 Ответ

0 голосов
/ 01 марта 2012

Когда событие не запускается? Если это когда пользователь печатает, то вы можете использовать событие TextChanged. Затем вы можете продолжить реализацию в методе OnKey.

Также посмотрите в этой статье кнопку «поиск»:

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

...