2016-07-25 46 views
0

我有一個TextInputLayout這樣錯誤TextInputLayout不顯示再次扯平setErrorEnabled(真)

<android.support.design.widget.TextInputLayout 
      android:id="@+id/input_layout_name" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"> 

      <EditText 
       android:id="@+id/edt_name" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:hint="@string/title_what_should_we_call_you" /> 

</android.support.design.widget.TextInputLayout> 

對於有效的名稱時,自來水提交按鈕我用

private boolean validateName() { 
     if (edtName.getText().toString().trim().isEmpty()) { 
      inputLayoutName.setErrorEnabled(true); 
      inputLayoutName.setError("Enter name");  
      return false; 
     } else { 
      inputLayoutName.setErrorEnabled(false); 
     } 
     return true; 
} 

當我運行的應用程序,不要輸入值來命名並點擊提交,錯誤顯示(正確)。
然後我輸入一些值名稱 - >水龍頭提交 - >錯誤隱藏(正確)
但後來我清除所有的名字 - >水龍頭提交 - >的誤差不顯示

爲什麼它的發生?任何幫助或建議將不勝感激。

如果我不使用setErrorEnabled(false);和剛剛成立的錯誤信息爲空,錯誤消息仍然看不到的了

+0

錯誤啓用/禁用真的需要嗎? – Shaishav

+0

@Shaishav如果我不使用setErrorEnabled(false);並將錯誤消息設置爲空,錯誤消息的視圖仍然可見不會消失 –

+0

呃......我只在輸入錯誤時才使用顯示功能的錯誤。如果一切都很好,我不會調用'setError()'。爲什麼你需要調用'setError(null)'? – Shaishav

回答

0

我做了一個樣本,以測試這個的觀點和所有我需要做的就是:

if (edtName.getText().toString().trim().isEmpty()) { 
     inputLayoutName.setError("Enter name");  
     return false; 
} else { 
     inputLayoutName.setErrorEnabled(false); 
} 

return true; 

錯誤會在您的用例中出現。你可以檢查這個嗎?