Я хочу обнаружить событие Back Key в моем CustomView (например, EditText). Во многих случаях это было достигнуто путем переопределения onKeyDown()
или dispatchKeyEvent()
при условии, что мой CustomView получит фокус.Как обнаружить Back Key в моем CustomView
CustomView.java
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK) {
.....
return true;
}else{
return super.onKeyDown(keyCode, event);
}
}
Однако, если активность включая CustomView также перекрывая onKeyDown()
или dispatchKeyEvent()
, он может не работать много. То есть, активность получила Back-KeyEvent перед тем, как CustomView имеет.
Я предпочитаю поймать Back-KeyEvent перед действием.
, пожалуйста, сообщите мне несколько идей об этой проблеме. Спасибо.
Это не совсем так. Метод 'onKeyDown' в' Activity' вызывается, когда ключ был нажат и не обрабатывается каким-либо из видов внутри действия. «Сначала вызывается onKeyDown на сфокусированном представлении, затем на Activity, затем на остальном. –
Но поскольку мы возвращаем false, он перейдет к следующему приемнику. Правильно? Хотя ответ @MoshErsan может быть предпочтительнее сделать это. Но, как упоминалось в вопросе, onKeyDown уже переопределен в Activity, поэтому вам нужно вернуть false там, несмотря ни на что! :) –
Как вы говорите. К вашим услугам, я мог бы понять порядок, в котором вызывается метод. Фактически, когда я пытался, это было «Просмотр # onKeyPreIme», «Activity # dispatchKeyEvent», «View # dispatchKeyEvent», «View # onKeyDown», а затем, «Activity # onKeyDown». Благодаря! – Gottie