我正在尝试将编辑文本值限制为小于或等于 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)
根据这个问题,您不应该更改onTextChanged()
中正在监视的编辑文本的文本。我的猜测是它会导致无限递归循环。
相反,请尝试将设置文本的逻辑放在 afterTextChanged()
中。
setText(( 方法需要字符串类型参数,请确保传递的是字符串类型参数,可以使用类型转换