Почему нажатие кнопки «Перейти» на клавиатуре Android отправляет два события KeyEvent на onEditActionListener - PullRequest
1 голос
/ 03 июня 2019

Мне было просто очень любопытно, почему onEditActionListener отображал два KeyEvents, когда я регистрировал события.

    pageNumET.setOnEditorActionListener(new TextView.OnEditorActionListener(){
        @Override
        public boolean onEditorAction(TextView t, int actionId, KeyEvent event){
            if(!(event == null)){
                Log.e("ACTIONID", actionId+"");
                Log.e("ACTIONEVENT", event+"");
                if(event.getAction() == KeyEvent.ACTION_DOWN){
                    infoText.setText("IT WORKED");

                    return true;
                }
            }

            return false;
        }
    }
);

Это код, он отлично работает. Потом когда я нажимаю Go в эмуляторе.

Это зарегистрировано:

E/ACTIONID: 66
E/ACTIONEVENT: null
E/ACTIONID: 0
E/ACTIONEVENT: KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_ENTER, scanCode=0, metaState=0, flags=0x16, repeatCount=0, eventTime=427524, downTime=427524, deviceId=-1, source=0x0 }

Я не знаю, почему произошло второе событие.

1 Ответ

0 голосов
/ 03 июня 2019

Вы должны использовать keyup, если вы хотите только одно событие.Смотрите это .

...