EditText错误未清除

时间:2014-03-30 17:51:37

标签: android android-edittext

让我们采取以下简化测试案例:

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="@android:id/text1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <EditText
        android:id="@android:id/text2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <Button android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Click me!"
        android:id="@android:id/button1"/>

</LinearLayout>

MainActivity.xml

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final TextView text1 = (TextView) findViewById(R.id.text1);
        final TextView text2 = (TextView) findViewById(R.id.text2);
        Button button = (Button) findViewById(R.id.button1);
        button.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    text1.setError("error");
                    text2.setError("error");
                }
            });
        }
    }

我遇到以下问题:TextView.setErrorText()的文档说明当任何关键事件导致TextView发生更改时,错误消息和图标都会被清除。但在此示例中,仅清除了第二个窗口小部件,第一个窗口小部件未更改。

1 个答案:

答案 0 :(得分:2)

文档非常明确:

public void setError (CharSequence error)

&#34;将TextView的右手复合drawable设置为&#34; error&#34;图标并设置一个错误消息,当TextView具有焦点时,该消息将显示在弹出中。 &#34;

当您的应用执行时,您的EditText之一会收到焦点。另一个是未聚焦的,因此,不显示错误文本。这就是你问题的答案。

顺便说一下,混合命名空间真的不是一个好习惯:android.R。*(@ android:)和R。(@ id / *)。这可能会导致您的应用程序在不久的将来几乎无法跟踪错误。