4

EnterkeyeventにsetOnKeyListenerを追加しました。ただし、setOnKeyListenerを追加した後、削除(バックスペース)キーが機能しません。setOnKeyListenerを削除すると、削除キーは正常に機能しています。

削除キーがうまく機能するように修正するにはどうすればよいですか?

final EditText edittext = (EditText) findViewById(R.id.editText1);

        edittext.setOnKeyListener(new OnKeyListener() {


            @Override
            public boolean onKey(View arg0, int arg1, KeyEvent event) {
                // TODO Auto-generated method stub
                 if (event != null&& (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {

                     InputMethodManager in = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                        in.hideSoftInputFromWindow(edittext
                                .getApplicationWindowToken(),
                                InputMethodManager.HIDE_NOT_ALWAYS);

                     applySearch();


                 }
                return true;
            }


        });
4

2 に答える 2

4

を返すTrueと、すべてのキーを処理しています。これを試して:

if (event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
    // something here
    return true;
}

// otherwhise
return false;

Android:ボタンのonKeyListenerのオーバーライドに関する問題

于 2012-06-02T20:29:50.790 に答える
3

ドキュメント によると、リスナーがイベントを消費した場合はonKey戻りTrue、それ以外の場合はfalseになります。あなたの場合:

@Override
public boolean onKey(View arg0, int arg1, KeyEvent event) {
    ...
    return true; // Try to return false instead
}

メソッドが返す場合、trueキーは処理されず、バックスペースは機能しません。

于 2012-06-02T20:28:15.673 に答える