更改 android 中编辑文本的 addTextChangedListener 侦听器中的文本会出错
Changing the text in addTextChangedListener listener of edit text in android gives error
- 是否无法更改
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.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)
在 TextWatcher
中更改 EditText
根本不是个好主意。
当您将 text
设置为 editText
时,您的 TextWatcher
将再次呼叫。
注意:- 它将进入 无限循环 。
解决方法:-
在 TextWacher
中使用字符串值作为结果,并在 text-watcher 之外更改 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
并在 onTextChange()
方法
中更新您的 TextView
文本
另一种解决方案:- 像这样创建 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
的 textWatcher
中用 id
code 更新 editText
id
手机.
- 是否无法更改
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.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)
在 TextWatcher
中更改 EditText
根本不是个好主意。
当您将 text
设置为 editText
时,您的 TextWatcher
将再次呼叫。
注意:- 它将进入 无限循环 。
解决方法:-
在 TextWacher
中使用字符串值作为结果,并在 text-watcher 之外更改 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
并在 onTextChange()
方法
TextView
文本
另一种解决方案:- 像这样创建 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
的 textWatcher
中用 id
code 更新 editText
id
手机.