我建議驗證用戶的輸入有TextWatcher:
EditText textbox = new EditText(context);
textbox.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
// Your validation code goes here
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
});
只處理驗證在afterTextChanged方法,不要接觸其他兩個,如documentation建議。然而,afterTextChanged被觸發後,每當輸入改變,所以如果用戶輸入單詞「hello」,這個方法在輸入h時被調用,然後當輸入e時再次調用等等。此外,如果修改edittext值在afterTextChanged中,方法get也被調用。
另一種方法是在EditText失去焦點時驗證用戶輸入。爲了這個目的,你可以使用:
textbox.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
// Your validation code goes here
}
});
但是要小心,有些部件可能不會搶焦點,所以你EDITTEXT從來沒有失去它(有與按鈕實例)。
此外,EditText上提供setError方法,這標誌着一個紅色的錯誤標記的EditText並顯示傳遞給SETERROR給用戶(該文本可以通過你的呼喚SETERROR(「你的錯誤信息」時可以設置))文本。