一個EditText我使用一個EditText針對我有以下要求的輸入濾波器:使用輸入濾波器,用於在機器人
1)第一個字符不應該是一個數字 2)從第二個字符起字母,數字,下劃線和點被允許
我從一個帖子下面的代碼:
filter_username = new InputFilter() {
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
boolean keepOriginal = true;
sb = new StringBuilder(end - start);
for (int i = start; i < end; i++) {
char c = source.charAt(i);
// testString.append(c);
if (isCharAllowed2(c)) // put your condition here
sb.append(c);
else
keepOriginal = false;
}
if (keepOriginal)
return null;
else {
if (source instanceof Spanned) {
SpannableString sp = new SpannableString(sb);
TextUtils.copySpansFrom((Spanned) source, start, sb.length(), null, sp, 0);
return sp;
} else {
return sb;
}
}
}
private boolean isCharAllowed2(char c) {
if(sb.length()==0)
{
return Character.isLetter(c);
}
else
{
return (Character.isLetter(c)||Character.isDigit(c)||c=='_'||c=='.');
}
}
};
我只能夠輸入letters.The的問題,我認爲是這樣的線路:
sb = new StringBuilder(end - start);
每當我按下鍵時,都會創建一個新的Stringbuilder對象。因此它的長度將爲零,並且僅返回字母的第一個條件。
所以我想設置stringbuilder到另一個變量。它的工作部分,但是當我按下退格鍵,並清除文本,該新變量的值也必須清除。我該如何解決它?