Ответ на этот вопрос должен быть двояким.Это определяется тем, как был сгенерирован ключ.Если это было нажатие на аппаратную клавишу, то оба подхода, описанные ниже, действительны.Если это было нажатие на программную клавишу, то это зависит от фактического контекста.
1.) Если клавиша была результатом нажатия на программную клавиатуру, которое было получено длительным нажатием на клавишу Меню:
Вам необходимо тщательно переопределить следующую функцию:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_A:
{
//your Action code
return true;
}
}
return super.onKeyDown(keyCode, event);
}
2.) Если ваше действие содержит EditText, и из него была получена программная клавиша, тогда первый подход не работает, поскольку ключевое событие уже было использованоРедактировать текст.Вам нужно использовать текст измененного слушателя:
mMyEditText.addTextChangedListener(new TextWatcher()
{
public void afterTextChanged(Editable s)
{
}
public void beforeTextChanged(CharSequence s, int start, int count, int after)
{
/*This method is called to notify you that, within s, the count characters beginning at start are about to be replaced by new text with length after. It is an error to attempt to make changes to s from this callback.*/
}
public void onTextChanged(CharSequence s, int start, int before, int count)
{
}
);