Android:帮助创建一个按钮,其效果与敲击D-Pad上的向下键相同? (第2部分)

时间:2010-08-19 21:20:01

标签: android keyevent

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

downButton.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {

                InputMethodService.sendDownUpKeyEvents(0x00000014);
            }

2 个答案:

答案 0 :(得分:4)

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

new Thread(new Runnable() {         
    @Override
    public void run() {                 
        new Instrumentation().sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_DOWN);
    }   
}).start();

答案 1 :(得分: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);

请不要downvote或upvote我,我的答案与上面的答案完全一样,我只是将其修改为使用参数。