1

为什么这不起作用?我正在尝试为一个按钮创建一个 onClickListener,该按钮产生与按下 D-pad 上的“向下”键相同的效果。Eclipse 给我一个错误,说:“无法从 InputMethodService 类型中对非静态方法 sendDownUpKeyEvents(int) 进行静态引用”帮助!

downButton.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {

                InputMethodService.sendDownUpKeyEvents(0x00000014);
            }
4

2 回答 2

4

您正在尝试以静态方式调用非静态方法。您需要先获取服务的实例,然后调用实例上的方法。此外,您进行按键模拟的方式看起来也不正确。UPD:经过一番挖掘,我设法模拟了关键事件,请尝试:

new Thread(new Runnable() {         
    @Override
    public void run() {                 
        new Instrumentation().sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_DOWN);
    }   
}).start();
于 2010-08-19T21:27:25.897 回答
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);

请不要对我投反对票或投赞成票,我的答案与上面的答案完全一样,我只是将其修改为使用参数。

于 2011-01-23T23:50:22.870 回答