input后EditText setError消息不清除

好,所以我只有一个EditText字段和一个button,当按下时触发一个AsyncTask。

EditText playerName = (EditText)findViewById(R.id.playerEditText); if(playerName.getText().toString().length() == 0 ) playerName.setError("Player name is required!"); else { // do async task } 

问题是,即使在我input有效的文本进行search后,错误消息似乎仍然保持不变。 是否有一种方法来删除EditText不是空的一旦错误?

在其他方括号中,放入playerName.setError(null) ,这将清除错误。

API文档:“当任何关键事件导致TextView文本更改时,图标和错误消息将被重置为空。 虽然不是这样 – 所以我们可以把它当成bug。

如果使用inputType(如textNoSuggestions,textEmailAddress,textPassword),则input字符后将不会设置错误。 几乎和文档一样,但又不完全一样 – 当你删除一个字符时,错误仍然存​​在。 看来,addTextChangedListener和setError(null)的一个简单的解决方法可以达到承诺的行为。

除了在Android 4.2上有关于图标丢失的post。 所以小心使用。

试试这个监听器:

  playerName.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable edt){ if( playerName.getText().length()>0) { playerName.setError(null); } } 

如果要隐藏错误消息,您可以在编辑框中应用onclicklistener,然后执行下列操作

 EditTextname.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub EditTextname.setError(Null) } });