Как обнаружить ключ возврата в моем CustomView - PullRequest
6 голосов
/ 31 января 2012

Я хочу обнаружить событие Back Key в моем CustomView (например, EditText). Во многих случаях это достигается путем переопределения onKeyDown() или dispatchKeyEvent() при условии, что мой CustomView получает фокус.

CustomView.java

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if( keyCode == KeyEvent.KEYCODE_BACK) {
        ..... 
        return true;
    }else{
        return super.onKeyDown(keyCode, event);
    }
}

Однако, если Activity, включая CustomView, также переопределяет onKeyDown() или dispatchKeyEvent(), это не может работать много. Таким образом, Activity получил Back-KeyEvent до того, как CustomView получил.

Я предпочитаю перехватывать Back-KeyEvent до того, как это сделает Activity.

расскажите, пожалуйста, несколько идей об этой проблеме. Спасибо.

Ответы [ 3 ]

2 голосов
/ 31 января 2012

Необходимо реализовать это, чтобы захватить кнопку НАЗАД, прежде чем она будет отправлена ​​в IME:

http://developer.android.com/reference/android/view/View.html#onKeyPreIme(int,android.view.KeyEvent)

0 голосов
/ 24 февраля 2018

Вы можете попробовать использовать

setFocusableInTouchMode(true)
setFocusable(true)
requestFocus()

в вашем индивидуальном представлении

0 голосов
/ 31 января 2012

Переопределите onKeyDown в своей активности и верните false . Так что событие распространяется и на другие взгляды.

Если вы обработали событие, верните true. Если вы хотите разрешить событие для обработки следующим получателем верните false.

...