ImeOptions не работает с AppCompatEditText

У меня есть фрагмент, который содержит EditText, и я пытаюсь настроить событие клавиатуры, но это не похоже на работу. actionId всегда 0,

<android.support.v7.widget.AppCompatEditText
    android:id="@+id/input_name"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="@string/hint_name"
    android:inputType="text"
    android:maxLines="1"
    android:imeOptions="actionNext"
    android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"/>

name.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        boolean handled = false;
        if (actionId == EditorInfo.IME_ACTION_NEXT) {
            save();
            handled = true;
        }
        return handled;
    }
});

Я также попытался установить метку кнопки, используя следующий код, но он не работает

name.setImeActionLabel("Next", KeyEvent.KEYCODE_ENTER);

2 ответа

Определение android:digits для алфавитов принимает только алфавиты и любые другие нажатия кнопок на клавиатуре игнорируются. Таким образом удалить атрибут digits в EditText и добавить проверку данных, введенных в Java-файл.

Я думаю, что вы не поняли с android:digits

Проверьте Android: цифры

Если установлено, указывает, что этот TextView имеет метод числового ввода и что эти конкретные символы являются теми, которые он будет принимать. Если это установлено, числовой подразумевается, чтобы быть истиной. По умолчанию установлено значение false.

android:digit указывает, что это editText будет принимать только цифры. В вашем случае вы определяете это с abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ которые не имеют цифры, что приводит к нет onEditorAction() Tirgger.

Кроме того, actionId будет 0, если вы установите setImeActionLabel() ,

Ps,
Если вы хотите отфильтровать ввод editText, вы должны пойти на InputFilter вместо.

Другие вопросы по тегам