代码之家  ›  专栏  ›  技术社区  ›  Devrath

在Android中更改编辑文本的addtextChangedListener侦听器中的文本会出错

  •  0
  • Devrath  · 技术社区  · 7 年前
    • 是否无法更改 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 回复  |  直到 7 年前
        1
  •  2
  •   sushildlh    7 年前

    改变 EditText 在里面 TextWatcher 一点都不好。

    当你设置 text editText 你的 文本扫描器 将再次呼叫。

    注:它将进入 无限循环 .

    解决方案:

    使用字符串值作为结果 TextWacher 改变你的 ExitText 外部文本观察程序。

    使用 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() 方法

    另一个解决方案 :-创建这样的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>
    

    更新你的 编辑文本 具有 id 代码 在你 文本扫描器 你的 编辑文本 具有 身份证件 可移动的 .

    推荐文章