13

私は公式の Android チュートリアルに従っていますが、EditText の「Enter」を押した後に関数を実行するこの非常に単純な例で何らかの問題が発生しています。

私は何をすべきかを理解しており、すべてが適切にセットアップされているように見えますが、Eclipse は次の行に不満を持っています:

edittext.setOnKeyListener(new OnKeyListener() {

エラーで下線setOnKeyListenerが引かれます:

タイプ View のメソッド setOnKeyListener(View.OnKeyListener) は引数に適用できません (new DialogInterface.OnKeyListener(){})

またOnKeyListener、エラーに下線を付けます:

タイプ new DialogInterface.OnKeyListener(){} は、継承された抽象メソッド DialogInterface.OnKeyListener.onKey(DialogInterface, int, KeyEvent) を実装する必要があります

おそらく誰かが私を正しい方向に撃つことができますか?他の解決策 (stackoverflow で既に見つけたもの) を試す前に、これを理解したいと思います。なぜなら、公式のチュートリアルのように、従うのがとても簡単なことがうまくいかないように思われるからです。

4

3 に答える 3

51

キーボード イベントを受け取るには、ビューにフォーカスが必要です。この使用を強制するには:

edittext.setFocusableInTouchMode(true);
edittext.requestFocus();

その後、例の同じコードを続けます。

edittext.setOnKeyListener(new View.OnKeyListener() {
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        // If the event is a key-down event on the "enter" button
        if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
            (keyCode == KeyEvent.KEYCODE_ENTER)) {
          // Perform action on key press
          Toast.makeText(HelloFormStuff.this, edittext.getText(), Toast.LENGTH_SHORT).show();
          return true;
        }
        return false;
    }
});
于 2011-11-22T21:08:11.513 に答える
12

私が見る限り、インポートが間違っているようです。

試す

edittext.setOnKeyListener(new View.OnKeyListener() {

またはこのインポートを追加

import android.view.View.OnKeyListener;

これを削除します

import android.content.DialogInterface.OnKeyListener;
于 2011-11-22T20:49:30.103 に答える
2

を含む import ステートメントを削除してDialogInterfaceから、 をインポートしView.OnKeyListenerます。

于 2011-11-22T20:48:55.987 に答える