【发布时间】:2014-02-23 10:34:50
【问题描述】:
好吧,我的要求是在编辑文本中添加过滤器,使其可以包含最多 6 位和小数点后 2 位的最大值。我基本上需要的是允许用户最多输入 6 位小数点后最多2位。
For example
999999.99 is valid (6 digits and two digits after the decimal)
9999999 is not valid (& digits)
999.99 is valid (3 digits and 2 digits after the decimal place)
现在在谷歌上搜索了一段时间后,我找到了使用 TextWatcher 使用以下代码解决我的问题的方法
public static CharSequence validText ="";
public static EditText setAmountValidation(final EditText editText,final Context context){
editText.addTextChangedListener(new TextWatcher()
{
private final Pattern sPattern = Pattern.compile("^([1-9][0-9]{0,5})?(\\.[0-9]{0,2}?)?$");
private CharSequence mText="";
private boolean isValid(CharSequence s) {
return sPattern.matcher(s).matches();
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count){
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after){
if(isValid(s)){
validText= s;
}
mText = isValid(s) ? s : validText;
}
@Override
public void afterTextChanged(Editable s)
{
if (!isValid(s))
{
editText.setText(mText);
}
mText = "";
}
});
return editText;
}
}
现在上面的代码抛出以下错误
Java 堆栈溢出错误
我错过了什么?
【问题讨论】:
标签: android validation android-edittext textwatcher