Home » Android » Android detect Done key press for OnScreen Keyboard

Android detect Done key press for OnScreen Keyboard

Posted by: admin March 11, 2020 Leave a comment

Questions:

Is it possible to detect when the Done key of onScreen keyboard was pressed ?

How to&Answers:

Yes, it is possible:

editText = (EditText) findViewById(R.id.edit_text);

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

Note that you will have to import the following libraries:

import android.view.KeyEvent;
import android.view.inputmethod.EditorInfo;
import android.widget.TextView;

Answer:

An Editor Info is most useful class when you have to deal with any
type of user input in your Android application. For e.g. in
login/registration/search operations we can use it for more accurate
keyboard input. An editor info class describes several attributes for
text editing object that an input method will be directly
communicating with edit text contents.

You can try with IME_ACTION_DONE .

This action performs a Done operation for nothing to input and the IME will be closed.

Using setOnEditorActionListener

EditTextObj.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        boolean handled = false;
        if (actionId == EditorInfo.IME_ACTION_DONE) {
            /* Write your logic here that will be executed when user taps next button */
            handled = true;
        }
        return handled;
    }
});

Answer:

Using Butterknife you can do this

@OnEditorAction(R.id.signInPasswordText)
boolean onEditorAction(TextView v, int actionId, KeyEvent event){
    if (actionId == EditorInfo.IME_ACTION_DONE || event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
        /* Write your logic here that will be executed when user taps next button */
    }
    return false;
}