Android: Помогите создать кнопку, которая дает тот же результат, что и нажатие клавиши D на D-Pad? (часть 2)

1

Почему это не работает? Я пытаюсь создать onClickListener для кнопки, которая производит тот же эффект, что и нажатие клавиши "вниз" на D-pad. Eclipse дает мне ошибку, говоря: "Невозможно сделать статическую ссылку на нестатический метод sendDownUpKeyEvents (int) из типа InputMethodService" Справка!

downButton.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {

                InputMethodService.sendDownUpKeyEvents(0x00000014);
            }
Теги:
keyevent

2 ответа

4
Лучший ответ

Вы пытаетесь использовать нестатический метод статическим способом. Сначала вам нужно получить экземпляр службы, а затем вызвать метод в экземпляре. Точно так же, как вы делаете симуляцию нажатия клавиш, выглядит некорректно. UPD: После некоторого копания мне удалось имитировать ключевое событие, попробуйте:

new Thread(new Runnable() {         
    @Override
    public void run() {                 
        new Instrumentation().sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_DOWN);
    }   
}).start();
  • 0
    пожалуйста, прости мою глупость, но я не совсем понимаю, что это значит ... как это должно быть написано?
  • 0
    Смотрите обновление, я не уверен, что это будет работать для вас, но по крайней мере затмение не будет жаловаться.
Показать ещё 6 комментариев
3

То же решение, просто примет параметр.

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);

Пожалуйста, не уменьшайте или не повышайте меня, мой ответ в точности соответствует приведенному выше ответу, я просто изменил его, чтобы использовать параметры.

  • 0
    Отлично. Работал на меня. Спасибо вам большое.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню