Я использую Edittext, чтобы написать код, который пользователь получил на свой номер телефона. Я делаю регистрацию в viewpager2. Когда пользователь вводит свой телефон и пароль и нажимает кнопку «Далее», viewpager2 проведет к следующему фрагменту, где находится мой текст редактирования, и пользователь должен будет написать код в этом тексте редактирования. Но когда пользователь нажимает на текстовый код редактирования, он показывает клавиатуру, но для текста (он должен быть для цифр) и текст редактирования не фокусируется, а текст не печатается. Но когда пользователь щелкнет второй раз по этому тексту редактирования, все будет хорошо - текст редактирования будет в фокусе и будет правая клавиатура.
Но было бы лучше, если бы все было хорошо с первой попытки. Эта проблема имеет несколько edittexts в моем проекте, но не все edittexts.
Вот код редактирования текста в xml:
<EditText
android:id="@+id/codeEditTextSUSC"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="34dp"
android:layout_marginEnd="34dp"
android:layout_marginBottom="35dp"
android:hint="@string/code"
android:inputType="numberSigned"
android:theme="@style/EditTextTheme"
app:layout_constraintBottom_toTopOf="@+id/sendAgainSUSC"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
И все, что с этим связано:
codeEditTextSUSC.setOnEditorActionListener { v, actionId, event ->
if (actionId == EditorInfo.IME_ACTION_DONE){
codeEditTextSUSC.clearFocus()
hideKeyboard()
}
false
}
codeEditTextSUSC.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(s: Editable?) {}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
codeErrorTextViewSUSC.visibility = View.INVISIBLE
if (count != 0) nextButtonSUSC.isEnabled = true
}
})
private fun checkCode(): Boolean {
if (codeEditTextSUSC.text.toString() == "") {
codeErrorTextViewSUSC.visibility = View.VISIBLE
shake(codeEditTextSUSC)
return false
} else {
return true
}
}
В чем проблема?