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

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

downButton.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {

                InputMethodService.sendDownUpKeyEvents(0x00000014);
            }

Ответы [ 2 ]

4 голосов
/ 20 августа 2010

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

new Thread(new Runnable() {         
    @Override
    public void run() {                 
        new Instrumentation().sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_DOWN);
    }   
}).start();
3 голосов
/ 24 января 2011

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

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

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

...