web-dev-qa-db-ja.com

android:完了キーが押されたときにソフトキーボードがアクションを実行する

EditTextがあります。テキストを入力した後、ユーザーがソフトキーボードのDoneキーを押すと、ボタンクリックイベントでも実装した検索操作を直接実行する必要があります。

65
Khawar Raza

これを試して

editText.setOnEditorActionListener(new OnEditorActionListener() {        
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if(actionId==EditorInfo.IME_ACTION_DONE){
            //do something
        }
    return false;
    }
});
181
Adil Soomro

これを試して

[〜#〜] done [〜#〜][〜#〜] return [〜#〜]の両方で機能します。

EditText editText= (EditText) findViewById(R.id.editText);
editText.setOnEditorActionListener(new EditText.OnEditorActionListener() {

                @Override
                public boolean onEditorAction(TextView v, int actionId,
                        KeyEvent event) {
                    if (event != null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER
                            || actionId == EditorInfo.IME_ACTION_DONE) {
                        // Do your action
                        return true;
                    }
                    return false;
                }
            });
20

KeyEventをキャッチして、そのキーコードを確認します。 FLAG_EDITOR_ACTIONは、入力キーに「次」または「完了」という自動ラベルが付けられたIMEからの入力キーを識別するために使用されます

if (event.getKeyCode() == KeyEvent.FLAG_EDITOR_ACTION)
    //your code here

ドキュメントを見つける here .

第二の方法

myEditText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView view, int actionId, KeyEvent event) {
    int result = actionId & EditorInfo.IME_MASK_ACTION;
    switch(result) {
    case EditorInfo.IME_ACTION_DONE:
        // done stuff
        break;
    case EditorInfo.IME_ACTION_NEXT:
        // next stuff
        break;
    }
 }
});
0
Xar E Ahmer

これを試して

これは、キーボードにEnter記号または次の矢印記号が表示されているかどうかにかかわらず、両方の状態で機能します

YourEdittextName.setOnEditorActionListener(new TextView.OnEditorActionListener()
    {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event)
        {
            if(actionId== EditorInfo.IME_ACTION_DONE||actionId==EditorInfo.IME_ACTION_NEXT)
            {
                //Perform Action here 
            }
            return false;
        }
    });

赤線に直面している場合は、これを行います... alt + enterを押してKeyeventとEditorInfoをインポートすると、すべてのエラーが適切に削除されます。

0
Sunil