Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android EditText setError未保留在框中_Android_Android Widget_Android Edittext - Fatal编程技术网

Android EditText setError未保留在框中

Android EditText setError未保留在框中,android,android-widget,android-edittext,Android,Android Widget,Android Edittext,这是我的设置 <EditText android:id="@+id/inputNo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="@string/inputHintText" android:inputType="textCapCharacte

这是我的设置

<EditText
            android:id="@+id/inputNo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:hint="@string/inputHintText"
            android:inputType="textCapCharacters"
            android:maxLength="10"
            android:textColor="#383838" />
代码工作正常,并在文本框中显示红色错误消息,直到按键10。但是假设用户仍然点击文本框上的第11个键,那么错误就会消失,而不会停留在文本框上。 有一点我意识到,在输入第10个输入字符后,不会调用afterTextChanged()方法,这意味着addTextChangedListener不会真正侦听第10个字符后的输入键,因为我们在EditText中定义了android:maxLength=“10”

如何解决这个问题?我期望的结果是,如果输入不是以“ABCD”开头,则错误消息将保留在edittext字段中,直到用户更正它


感谢您的指点/帮助

尝试此操作以限制编辑文本输入:

TextView editEntryVew = new TextView(...);
InputFilter[] filterArray = new InputFilter[1];
FilterArray[0] = new InputFilter.LengthFilter(10);
editEntryView.setFilters(filterArray );

确保在
EditText
为空时处理按下的delete键:

当用户输入的文本超过“maxLength”或删除空字段时,会出现问题。这似乎是一个操作系统错误,我尝试了很多方法,最终找到了如下解决方法:

假设您有许多文本字段和一个提交按钮,当用户按提交时,用自己的文本重置这些文本字段以再次触发验证,例如:

textField1.setText(textField1.getText()) 
textField2.setText(textField2.getText()) 

if (TextUtils.isEmpty(textField1.getError()) && TextUtils.isEmpty(textField2.getError())) 
        // submit
else 
        Toast.makeText(mContext, "Please correct invalid fields", Toast.LENGTH_SHORT).show();

我希望这有帮助

你所说的
filterary[0]=newInputFilter.LengthFilter(10)是什么意思?我尝试了这一点,并从xml中删除了最大长度约束,但我仍然看到错误图标和消息在第10次笔划后消失。我也注意到了这一点。在我的例子中,EditText值为空是无效的。如果错误一直持续到用户键入某个内容,则更直观。目前,当EditText没有内容并且用户点击backspace时,它就会消失。
textField1.setText(textField1.getText()) 
textField2.setText(textField2.getText()) 

if (TextUtils.isEmpty(textField1.getError()) && TextUtils.isEmpty(textField2.getError())) 
        // submit
else 
        Toast.makeText(mContext, "Please correct invalid fields", Toast.LENGTH_SHORT).show();