OnEditorActionListener с imeOptions actionNext не работает
Вот мой код:
<android.support.design.widget.TextInputLayout
android:id="@+id/mylayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/some_layout">
<android.support.design.widget.TextInputEditText
android:id="@+id/myid"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:hint="@string/some_hint"
android:imeOptions="actionNext"
android:inputType="time"
android:maxLength="@integer/max_input_length"
android:maxLines="1"
android:singleLine="true"
android:textSize="15sp"/>
</android.support.design.widget.TextInputLayout>
и код Java:
myField = (TextInputEditText) findViewById(R.id.myid);
myField.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
boolean handled = false;
if (actionId == EditorInfo.IME_ACTION_NEXT) {
Log.d(TAG,"next");
//Do something
handled = true;
}
Log.d(TAG,"handled: "+handled);
return handled;
}
});`
К сожалению, когда я нажимаю следующую кнопку на клавиатуре, ничего не происходит. Курсор не переходит на следующее поле. Я не вижу, что мне не хватает
2 ответа
Решение
Согласно документу
IME_ACTION_NEXT
Биты IME_MASK_ACTION: ключ действия выполняет "следующую" операцию, переводя пользователя в следующее поле, которое будет принимать текст.
Таким образом, это означает, что он будет фокусироваться на следующем фокусируемом объекте, таком как edittext или автозаполнение текста. поэтому, если никакой другой объект не может получить фокус, он не будет перемещать фокус.
Использование android:inputType="text"
для тебя TextInputEditText
попробуйте позвонить view.requestFocus();
в ваших действиях.
myField.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
boolean handled = false;
if (actionId == EditorInfo.IME_ACTION_NEXT) {
Log.d(TAG,"next");
//Do something
Log.d(TAG,"handled: "+handled);
view.requestFocus() ; //add focus to next view object
return true; //return true
}
Log.d(TAG,"handled: "+handled);
return false; //add return
}
});