Изменение текста в addTextChangedListener слушатель редактирования текста в Android дает ошибку
- Разве нельзя изменить текст
EditText
вafterTextChanged
- Это дает ошибку ниже
- Есть ли конкретный способ изменить текст
код:
inputEmail.addTextChangedListener(object :TextWatcher{
override fun afterTextChanged(s: Editable?) {
inputEmail.setText("123456")
}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
}
})
Ошибка:
at com.caring2u.organizer.ui.fragments.screen.FrgBookingDetails$setEditTextListeners$4.afterTextChanged(FrgBookingDetails.kt:256)
at android.widget.TextView.sendAfterTextChanged(TextView.java:9605)
at android.widget.TextView.setText(TextView.java:5496)
at android.widget.TextView.setText(TextView.java:5343)
at android.widget.EditText.setText(EditText.java:113)
at android.widget.TextView.setText(TextView.java:5300)
1 ответ
Решение
Изменения EditText
в TextWatcher
это не очень хорошая идея.
Когда вы устанавливаете text
в editText
ваш TextWatcher
позвоню снова.
Примечание:- И оно будет идти бесконечным циклом.
Решение для этого:-
Использовать строковое значение как результат в TextWacher
и измени свой ExitText
внешний наблюдатель
С помощью TextView
вы можете сделать это.....
Создайте TextView
в вашем макете, как показано ниже.
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/edit_phone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/border_edittext"
android:gravity="center"
android:inputType="number"
android:padding="10dp"
android:singleLine="true" />
<TextView
android:id="@+id/text_phone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/border_edittext"
android:gravity="center"
android:inputType="number"
android:padding="10dp"
android:singleLine="true" />
</FrameLayout>
и использовать textWatcher
и обновите свой TextView
текст внутри onTextChange()
метод
Другое решение:- Создайте XMl, как это
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="wrap_content">
<EditText
android:id="@+id/code"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:background="@drawable/border_edittext"
android:gravity="center"
android:inputType="number"
android:padding="10dp"
android:text=""
android:singleLine="true" />
<EditText
android:id="@+id/mobile"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/border_edittext"
android:gravity="center"
android:inputType="number"
android:padding="10dp"
android:singleLine="true" />
</LinearLayout>
и обновите свой editText
с id
код в вашем textWatcher
вашей editText
с id
мобильный.