0

いくつかの EditTexts を含むポップアップ ウィンドウがあります。ポップアップ ウィンドウ内にカスタム数値キーボードを作成したいと考えています。つまり、0 ~ 9 の数字を表す 10 個のボタンがあります。ボタンのonClickListener内でキーイベントをディスパッチしようとしています

public void onClick(View v) {
    dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_0));
}

ただし、EditTexts には影響しません。focusable equals true と false で実行しようとしましたが、結果は同じです。アクティビティのメイン レイアウトでキー イベントをディスパッチしようとするとうまくいきますが、ポップアップ ウィンドウ内でコードを動作させるには何を変更すればよいでしょうか?

4

1 に答える 1

-1

EditTexts にフォーカスをリクエストしてみましたか? 使うだけでなく

editText.setFocusable(true);

だけでなく、

editText.requestFocus();

最初にDOWNイベントを注入していないため、機能していない可能性もあると思います。次のことを試してください。

Instrumentation mInstrumentation = new Instrumentation();
final Thread t = new Thread() {
     public void run(){ 
              mInstrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_0);               
     };
t.start();

これにより、フォーカスのあるビューによって処理されるイベントが注入されます

于 2013-03-05T14:30:06.973 に答える