KeyBoard : setonkeylistener not working for EditText

7.6k views Asked by At

I am created an app which toast some text when user click on android keyboard's ENTER key but its working on my desktop keyboard means when i click on desktop keyboard's enter key its making toast.
So what could i do for android keyboard's enter key????

HERE is code:

public class MainActivity extends AppCompatActivity implements View.OnKeyListener{

EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    editText=(EditText)findViewById(R.id.editText);
    editText.setOnKeyListener(this);
}

@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
    if(keyCode==KeyEvent.KEYCODE_ENTER){
        Toast.makeText(this,editText.getText().toString()+"Enter Pressed",Toast.LENGTH_LONG).show();
        return true;
    }
    return false;
}

}

2

There are 2 answers

2
rafsanahmad007 On BEST ANSWER

Try using this: Filter your action first using KeyEvent.ACTION_DOWN

@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
    if ((event.getAction() == KeyEvent.ACTION_DOWN)
            && (keyCode == KeyEvent.KEYCODE_ENTER)) {
        Toast.makeText(this,editText.getText().toString()+"Enter Pressed",Toast.LENGTH_LONG).show();
        return true;
    }
    return false;
}

EDIT

use an setOnEditorActionListener on your Edittext

editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            if ( (actionId == EditorInfo.IME_ACTION_DONE) || ((event.getKeyCode() == KeyEvent.KEYCODE_ENTER) && (event.getAction() == KeyEvent.ACTION_DOWN ))){
                Toast.makeText(this,editText.getText().toString()+"Enter Pressed",Toast.LENGTH_LONG).show();
                return true;
            }
            else{
                return false;
            }
        }
    });

Make sure in XMl you had:

<EditText
    android:imeOptions="actionDone"
    android:inputType="text"/>
0
Sam Chen On

onKeyListener() is working for hard keyboard not soft keyborad.


Helpful reading:

EditText OnKeyListener not working

Android EditText delete(backspace) key event

setOnKeyListener not responding