dispatchKeyEvent не влияет на EditText внутри PopupWindow

У меня есть всплывающее окно, содержащее некоторые EditTexts. Я хочу создать свою собственную цифровую клавиатуру во всплывающем окне. Итак, у меня есть 10 кнопок, которые представляют цифры 0-9. Внутри кнопок onClickListener я пытаюсь отправить ключевое событие

public void onClick(View v) {
    dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_0));
}

но это не влияет на EditTexts. Я пытался сделать это с помощью focusable equals true и false, но результат тот же. Когда я пытаюсь отправить ключевое событие в основном макете активности, он работает хорошо, так что я должен изменить, чтобы мой код работал во всплывающем окне?


person Volodymyr Kulyk    schedule 17.01.2013    source источник


Ответы (1)


Вы пытались запросить фокус на EditTexts? Не только используя

editText.setFocusable(true);

но и

editText.requestFocus();

Я думаю, что также возможно, что это не работает, потому что вы сначала не вводите событие DOWN. Попробуйте следующее:

Instrumentation mInstrumentation = new Instrumentation();
final Thread t = new Thread() {
     public void run(){ 
              mInstrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_0);               
     };
t.start();

Это введет событие, которое будет обработано представлением, имеющим фокус

person dleal    schedule 05.03.2013
comment
Почему отрицательный голос? Специально без комментариев - person dleal; 16.04.2020