我已经用以下问题进行了测试: 我需要验证,EditText的值是1到1000之间的整数。如果不是,我应该将一些默认值放入EditText。 当我尝试用下面的代码做这样的事情时 - 我遇到了无限循环(好吧,那是可预测的)。我已经检查了类似的问题,但我仍然无法弄清楚,如何使代码正常工作。
是否有其他方法来实现理想的行为?我应该如何编辑我的代码来实现这一目标?
验证EditText
Long mailIntervalValue;
EditText etMailInterval;
.
.
.
.
etMailInterval=(EditText)findViewById(R.id.et_mail_check_interval);
etMailInterval.setText(mailIntervalValue.toString());
etMailInterval.addTextChangedListener(new TextWatcher(){
public void afterTextChanged(Editable s) {
Integer t=Integer.getInteger(s.toString());
if (t==null){
s.clear();
s.append(mailIntervalValue.toString());
mailIntervalValue=MessageManager.DEFAULT_TIME;
}
else
mailIntervalValue=t.longValue();
if (mailIntervalValue<1 || mailIntervalValue>1000){
if (mailIntervalValue<1)
mailIntervalValue=1L;
else
mailIntervalValue=1000L;
s.clear();
s.append(mailIntervalValue.toString());
Toast.makeText(MainActivity.this, MainActivity.this.getString(R.string.settings_timer_fail),
Toast.LENGTH_SHORT).show();
}
saveMailerPrefs();
}
public void beforeTextChanged(CharSequence s, int start, int count, int after){}
public void onTextChanged(CharSequence s, int start, int before, int count){}
});
谢谢,我认为这就是我所需要的。 – Dirol
欢迎。希望对你有效。 –