3

私はAndroidの比較的初心者です。EditText/TextViewでキーとソフトキーをリッスンする方法について、誰かがまともな説明をしていますか?

包括的なチュートリアルまたは一連の例が見たいです。

私が理解しているように、onKeyDown()、onKeyUp() などのアクティビティに KeyListener を追加できますが、これを試してみると、たとえば HOME と BACK のみの通常のキーのイベントをトリガーできません。

TextWatcher の使用についての言及を見てきましたが、それは生のキー イベントの処理と同じではありません。

ここSOには多くの半分の解決策があるようです。あなたが混乱の霧を一掃するのを手伝ってくれることを願っています...

4

4 に答える 4

2

アクティビティではなく、EditText 自体にキー リスナーを割り当てる必要があります。

于 2010-09-16T14:39:40.503 に答える
2

これは、BACK または MENU キー イベントをリッスンする必要があるものです。インターフェイスを実装せずに、このメソッドを追加するだけです。これは、すべてのアクティビティが継承する BaseActivity で行います。

public boolean onKeyDown(int keyCode, KeyEvent event) {
    Log.d(NAME, "Key pressed");

    switch (keyCode) {
    case KeyEvent.KEYCODE_BACK:
        Log.d(NAME, "Back pressed");
        // IGNORE back key!!
        return true;
        /* Muestra el Menú de Opciones */
    case KeyEvent.KEYCODE_MENU:
        Intent menu = new Intent(this, Menu.class);

        // start activity
        startActivity(menu);
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

PS: 戻るキーを無視することは強くお勧めしません。

于 2010-09-16T14:45:43.543 に答える
1

例えば:

myEditText.setOnKeyListener(new OnKeyListener() {
     public boolean onKey(View v, int keyCode, KeyEvent event) {
         if (event.getAction() == KeyEvent.ACTION_DOWN)
             if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER){
                //your code here
             }
         return false;
     }
});
于 2010-12-01T15:40:00.557 に答える