How do I handle ImeOptions' done button click? How do I handle ImeOptions' done button click? android android

How do I handle ImeOptions' done button click?


I ended up with a combination of Roberts and chirags answers:

((EditText)findViewById(R.id.search_field)).setOnEditorActionListener(        new EditText.OnEditorActionListener() {    @Override    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {        // Identifier of the action. This will be either the identifier you supplied,        // or EditorInfo.IME_NULL if being called due to the enter key being pressed.        if (actionId == EditorInfo.IME_ACTION_SEARCH                || actionId == EditorInfo.IME_ACTION_DONE                || event.getAction() == KeyEvent.ACTION_DOWN                && event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {            onSearchAction(v);            return true;        }        // Return true if you have consumed the action, else false.        return false;    }});

Update:The above code would some times activate the callback twice. Instead I've opted for the following code, which I got from the Google chat clients:

public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {    // If triggered by an enter key, this is the event; otherwise, this is null.    if (event != null) {        // if shift key is down, then we want to insert the '\n' char in the TextView;        // otherwise, the default action is to send the message.        if (!event.isShiftPressed()) {            if (isPreparedForSending()) {                confirmSendMessageIfNeeded();            }            return true;        }        return false;    }    if (isPreparedForSending()) {        confirmSendMessageIfNeeded();    }    return true;}


Try this, it should work for what you need:


editText.setOnEditorActionListener(new EditText.OnEditorActionListener() {    @Override    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {    if (actionId == EditorInfo.IME_ACTION_DONE) {       //do here your stuff f       return true;    }    return false;    } });


<EditText android:imeOptions="actionDone"          android:inputType="text"/>

The Java code is:

edittext.setOnEditorActionListener(new OnEditorActionListener() {     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {        if (actionId == EditorInfo.IME_ACTION_DONE) {            Log.i(TAG,"Here you can write the code");            return true;        }            return false;    }});