Почему это не работает? Я пытаюсь создать onClickListener для кнопки, которая производит тот же эффект, что и нажатие клавиши "вниз" на D-pad. Eclipse дает мне ошибку, говоря: "Невозможно сделать статическую ссылку на нестатический метод sendDownUpKeyEvents (int) из типа InputMethodService" Справка!
downButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
InputMethodService.sendDownUpKeyEvents(0x00000014);
}
Вы пытаетесь использовать нестатический метод статическим способом. Сначала вам нужно получить экземпляр службы, а затем вызвать метод в экземпляре. Точно так же, как вы делаете симуляцию нажатия клавиш, выглядит некорректно. UPD: После некоторого копания мне удалось имитировать ключевое событие, попробуйте:
new Thread(new Runnable() {
@Override
public void run() {
new Instrumentation().sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_DOWN);
}
}).start();
То же решение, просто примет параметр.
private void InjectKeys(final int keyEventCode) {
new Thread(new Runnable() {
@Override
public void run() {
new Instrumentation().sendKeyDownUpSync(keyEventCode);
}
}).start();
}
Просто позвоните и передайте KeyEvent.KEYCODE
так: InjectKeys(KeyEvent.KEYCODE_DPAD_DOWN);
Пожалуйста, не уменьшайте или не повышайте меня, мой ответ в точности соответствует приведенному выше ответу, я просто изменил его, чтобы использовать параметры.