web-dev-qa-db-ja.com

Android EditTextの「Enter」を押した後に関数を実行します

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

私は何をすべきかを理解しており、すべてが正しく設定されているようですが、Eclipseは次の行で不満を言っています。

edittext.setOnKeyListener(new OnKeyListener() {

次のエラーでsetOnKeyListenerに下線を引きます:

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

また、OnKeyListenerにエラーで下線を引きます:

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

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

12
user1060582

私が見ることができるものから、あなたは間違ったインポートをしているようです。

試す

edittext.setOnKeyListener(new View.OnKeyListener() {

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

import Android.view.View.OnKeyListener;

そして、これを削除します

import Android.content.DialogInterface.OnKeyListener;
12
MrZander

キーボードイベントを受け取るには、ビューmustにフォーカスがあります。これを強制するには:

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;
    }
});
50

DialogInterfaceが含まれるインポート文を削除してから、View.OnKeyListener

2
C0deAttack