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) } });