Backspace不会清除EditText中的错误

时间:2014-11-26 21:33:15

标签: android

我的问题是当我按Backspace(删除错误条目)时,EditText不清除错误的原因。

在回顾了有关此主题的答案之后:有人建议使用TextWatcher,这显然是解决方法https://stackoverflow.com/a/24828706/1306324。有人说这是一个Android bug。

我决定编写以下简单的测试用例:

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;

public class MainActivity extends Activity {

       @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            final EditText text1 = (EditText) findViewById(R.id.text1);
            text1.setOnEditorActionListener(new OnEditorActionListener() {
                public boolean onEditorAction(TextView editText, int actionId, KeyEvent keyEvent) {
                    if (Integer.valueOf(text1.getText().toString())>=50) {
                        text1.setError("Must be less than 50");
                        return true; //keeps this field in focus in case I had >1 entry fields
                    }
                    return false;
                }
            });
       }
}

使用布局activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <EditText
        android:id="@+id/text1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="number"/>
</LinearLayout>

确实我键入“123”并按完成我收到错误消息。然后我退格删除3然后2.我仍然收到错误消息。我键入2.错误消息清除。这是不正确的。我想,一旦退格,错误就应该清除。如果这确实是一个错误,那么应该修复它。我用4.1和4.3进行了测试。奇怪的是,它似乎在我的2.3.3上工作正常。

1 个答案:

答案 0 :(得分:0)

触发bachspace时,只需设置

即可
text1.setError(null);

根据documentation

,这将清除错误
  

如果错误为空,则将清除错误消息(和您一样)   应该提供一个空图标)。

在您检测退格事件的情况下,请使用 keyEvent.getAction==KeyEvent.KEYCODE_DEL检测退格。