imeOptions "actionNext" programmatically - how to jump to next field?
AndroidTextviewImeImeoptionsAndroid Problem Overview
In layout XML it is possible to specify android:imeOptions="actionNext"
which adds Next
button in virtual keyboard and by clicking on it - focus jumps to the next field.
How to do this programmatically - e.g. based on some event trigger focus to go to the next field?
Android Solutions
Solution 1 - Android
You can use the constants from EditorInfo class for the IME options. like,
editText.setImeOptions(EditorInfo.IME_ACTION_NEXT);
Solution 2 - Android
Search for the next focusable field and than invoke requestFocus()
.
TextView nextField = (TextView)currentField.focusSearch(View.FOCUS_RIGHT);
nextField.requestFocus();
Solution 3 - Android
Just suggestion, if you are using
EditTextSample.setImeOptions(EditorInfo.IME_ACTION_DONE);
it doesn't work, make sure that your EditText is using a single line.
> Eg: > > editTextSample.setSingleLine();
Solution 4 - Android
There is always necessity to add extra keys apart from default keys available in virtual QWERTY
keyboard.
Using XML
<EditText android:text="@+id/EditText01"
android:id="@+id/EditText01"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:imeOptions="actionDone"/>
By Programmatic Way
An EditorInfo
is most useful class when you have to deal with any type of user input in your Android application.
IME_ACTION_DONE:
This action performs a “done” operation for nothing to input and the IME will be closed.
EditTextSample.setImeOptions(EditorInfo.IME_ACTION_DONE);
For more information you may visit http://developer.android.com/reference/android/view/inputmethod/EditorInfo.html
Solution 5 - Android
The kotlin pendant
editText.imeOptions = EditorInfo.IME_ACTION_DONE
Solution 6 - Android
editText.setLines(1);
editText.setSingleLine(true);
editText.setImeOptions(EditorInfo.IME_ACTION_GO);
I solve the problem make sure with single line and go next editText when click enter
Solution 7 - Android
In my case, set an imeOptions fix the problem.
edtAnswer.maxLines = 1
edtAnswer.inputType = InputType.TYPE_CLASS_TEXT
edtAnswer.imeOptions = EditorInfo.IME_ACTION_NEXT
Solution 8 - Android
I tried all of the answers but EditorAction worked for me!
> EditText.onEditorAction(EditorInfo.IME_ACTION_NEXT)
My XML layout:
<EditText
android:id="@+id/input1"
style="@style/edittext"
android:nextFocusForward="@id/input2"
android:layout_width="0dp"
android:layout_height="wrap_content"/>
<EditText
android:id="@+id/input2"
style="@style/edittext"
android:nextFocusLeft="@id/input1"
android:layout_weight="1"
android:nextFocusRight="@id/input3"
android:layout_width="0dp"
android:layout_height="wrap_content"/>
and Kotlin code:
input1.onEditorAction(EditorInfo.IME_ACTION_NEXT)
Now focus moves to the input2 Edittext.
Solution 9 - Android
You can do this by
edittext.imeOptions = EditorInfo.IME_ACTION_DONE //for done button
or
edittext.imeOptions = EditorInfo.IME_ACTION_NEXT //for next button
But... you need to understand that if you are using filters for edittext then you need to set
edittext.setSingleLine()
Solution 10 - Android
You can jump to the next field by using the following code:
BaseInputConnection inputConnection = new BaseInputConnection(editText, true);
inputConnection.performEditorAction(EditorInfo.IME_ACTION_NEXT);
//Use EditorInfo.IME_ACTION_UNSPECIFIED if you set android:imeOptions on the EditText