I have an Edittext with imeoptions asactiongo. and I triggered my event when pressing soft keyboard enter button.
mModelId.setOnE
I've checked at Android 2.1 and Android 4.0 versions and your code is working fine. IME_ACTION_GO event is reported in case EditText has singleLine option specified to true. In case it is specified to false actionId has IME_NULL value independently of the setImeActionLabel was called or no.
In the TextView.onKeyDown method i've found that IME_NULL actionId is used when KEYCODE_ENTER is detected
mEditor.mInputContentType.onEditorActionListener.onEditorAction(
this, EditorInfo.IME_NULL, event))
Perhaps it is custom keyboard issue. Do you use any? If so try these changes:
instead of
mModelId.setImeActionLabel("Search Model", KeyEvent.KEYCODE_ENTER);
should be
mModelId.setImeActionLabel("Search Model", EditorInfo.IME_ACTION_GO);
try this
declare edittext and OnEditorActionListener() like this
mModelId = (EditText) findViewById(R.id.edittext_id);
mModelId.setImeActionLabel("Search Model", KeyEvent.KEYCODE_ENTER);
mModelId.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
boolean handled = false;
if (actionId == KeyEvent.KEYCODE_ENTER) {
id = mModelId.getText().toString();
Toast.makeText(getActivity(), "You entered "+id, Toast.LENGTH_LONG).show();
callVolley();
handled = true;
}
return handled;
}
});
and you use imeoptions as actionGo then revome it, i think it override ImeActionLabel once try this and reply
setImeActionLabel take two parameters and the second int parameter should be one of the those that are in the EditorInfo class. Such as:
EditorInfo.IME_ACTION_GO
EditorInfo.IME_ACTION_DONE
EditorInfo.IME_ACTION_NEXT
....
You cannot send there any other integer like KeyEvent.KEYCODE_ENTER
And you have to set bothimeOptions parameter and singleLine parameter in XML in order it to work. Example:
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:imeOptions="actionGo"
android:singleLine="true"/>
Here is the code that I used and it is working:
XML Layout:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<EditText
android:id="@+id/editText2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"/>
</LinearLayout>
And the basic Activity code:
mEditText2.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
boolean handled = false;
if (actionId == EditorInfo.IME_ACTION_GO) {
Toast.makeText(MainActivity.this, "You entered " + v.getText().toString(), Toast.LENGTH_LONG).show();
handled = true;
}
return handled;
}
});
mEditText2.setImeActionLabel("Search Model", EditorInfo.IME_ACTION_GO);
Supply a value for EditorInfo.actionId used when an input method is connected to the text view.
numberEditor.mInputContentType.onEditorActionListener.onEditorAction( this, EditorInfo.IME_NULL, event))
Supply a value for EditorInfo.actionLabel used when an input method is connected to the text view.
Must be a string value, using '\;' to escape characters such as '\n' or '\uxxxx' for a unicode character.