1

EditTextがあり、setOnKeyListenerを使用してキーストロークをリッスンしようとしているので、Enterキーが押されたことを検出すると、何らかのアクションが実行されます。ハードキーボードとエミュレーターでは正常に動作しますが、GalaxyNexusでは動作しません。

setOnKeyListenerのドキュメントには、「ソフトウェア入力メソッドでキーを押しても、通常、このリスナーのメソッドはトリガーされない」と記載されていますが、その理由は説明されています。

「最初のアプリの作成」チュートリアルのように、画面に「完了」ボタンを明示的に追加したくありません。

これで、レイアウトxmlのプロパティを使用するように設定しましたandroid:inputType="text"が、目的の効果があるようです。これは正しいアプローチと見なされますか?それはどこかに文書化されていますか?すべてのデバイスで動作しますか?もっと良い方法はありますか?

アクティビティで使用しているコードは次のとおりです。

    myEditText.setOnKeyListener(new View.OnKeyListener() {
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (event.getAction() == KeyEvent.ACTION_DOWN) 
                if ((keyCode == KeyEvent.KEYCODE_DPAD_CENTER) ||
                  (keyCode == KeyEvent.KEYCODE_ENTER)) {
                    // Process the entered text here
                    myEditText.setText("");
                    return true;
                }
            return false;
        }
    }

これは、 ProfessionalAndroid4アプリケーション開発の第4章のToDoリストの例に基づいています。

4

1 に答える 1

1

それandroid:inputType="text"は確かに正しいアプローチのようです。

于 2013-01-09T14:30:02.417 に答える