我试图将编辑文本值限制为小于或等于130.在onCreate方法中,我执行了以下操作:
final EditText expectedYears = (EditText)findViewById(R.id.lifespan);
expectedYears.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {}
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
public void onTextChanged(CharSequence s, int start,
int before, int count){
if(Integer.parseInt(s.toString())>130){
expectedYears.setText(String.valueOf(130));
}
}
});
我不确定为什么应用程序在此之后崩溃了。通过测试,我发现expectedYears.setText
行造成了这种情况。我觉得一旦我设置了文本,就会再次调用onTextChanged函数。我怎样才能解决这个问题?
堆栈跟踪
at android.widget.EditText.setText(EditText.java:113)
at android.widget.TextView.setText(TextView.java:5209
at net.msolonko.motivation_app.MainActivity$1.onTextChanged(MainActivity.java:49)
at android.widget.TextView.sendOnTextChanged(TextView.java:9364)
at android.widget.TextView.setText(TextView.java:5397)
at android.widget.TextView.setText(TextView.java:5250)
答案 0 :(得分:1)
根据this question,您不应更改onTextChanged()
中正在观看的EditText的文本。我的猜测是它会导致无限递归循环。
相反,请尝试将文字设置为afterTextChanged()
。
答案 1 :(得分:0)
setText()方法需要字符串类型参数,请确保您传递的是字符串类型参数,可以使用类型转换