如何在 android studio 中检查 EditText 的值是否大于 500?
How to check that EditText has value greater than 500 in android studio?
请阅读我的问题描述。我没有得到如何问这个问题的正确方法。但是描述会向你解释我的问题。
好的,我有一个 EditText
,我希望当用户在 EditText
中输入大于 500 的数字时,应该可以看到一个 drawable
(勾号) (说明输入的数字是正确的)。
输入数字后假设用户退格并删除输入的数字(使数字小于 500
),drawable 应该是不可见的。
我已经使用 Textwatcher
完成了此操作,但问题是 当用户开始删除输入的号码时,出现错误并且应用程序崩溃 。示例 - 如果我输入 500 ... 一切正常并且可绘制对象也可见。现在我删除了 500 的 1 个零,现在 editext 的值为 50 并且 drawable 也是不可见的。现在我删除另一个 0,edittext 现在有值 5。到这里一切都OK。 现在,当我删除 5
时,应用程序崩溃并给出错误 。请有人告诉我我做错了什么?
activity 的屏幕截图。
这就是我正在做的..
ets2.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
if((Long.parseLong(ets2.getText().toString().trim())<500) || (ets2.length()==0) /*||(TextUtils.isEmpty(ets2.getText().toString()))*/){
step2tv.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
invalidtv.setVisibility(View.VISIBLE);
ets2.setError("Please enter amount \n greator than 500");
} else{
step2tv.setCompoundDrawablesWithIntrinsicBounds(0, 0,R.drawable.ic_checkgreen, 0);
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});
首先,无论何时发生崩溃,post 堆栈跟踪。它会告诉您崩溃的原因。
到这里,很容易猜到。当字符串为空时,parseLong 会抛出异常,因为"" 无法解析为long。解决这个问题的方法是捕获 NumberFormatException 并将其视为失败。
请阅读我的问题描述。我没有得到如何问这个问题的正确方法。但是描述会向你解释我的问题。
好的,我有一个 EditText
,我希望当用户在 EditText
中输入大于 500 的数字时,应该可以看到一个 drawable
(勾号) (说明输入的数字是正确的)。
输入数字后假设用户退格并删除输入的数字(使数字小于 500
),drawable 应该是不可见的。
我已经使用 Textwatcher
完成了此操作,但问题是 当用户开始删除输入的号码时,出现错误并且应用程序崩溃 。示例 - 如果我输入 500 ... 一切正常并且可绘制对象也可见。现在我删除了 500 的 1 个零,现在 editext 的值为 50 并且 drawable 也是不可见的。现在我删除另一个 0,edittext 现在有值 5。到这里一切都OK。 现在,当我删除 5
时,应用程序崩溃并给出错误 。请有人告诉我我做错了什么?
activity 的屏幕截图。
这就是我正在做的..
ets2.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
if((Long.parseLong(ets2.getText().toString().trim())<500) || (ets2.length()==0) /*||(TextUtils.isEmpty(ets2.getText().toString()))*/){
step2tv.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
invalidtv.setVisibility(View.VISIBLE);
ets2.setError("Please enter amount \n greator than 500");
} else{
step2tv.setCompoundDrawablesWithIntrinsicBounds(0, 0,R.drawable.ic_checkgreen, 0);
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});
首先,无论何时发生崩溃,post 堆栈跟踪。它会告诉您崩溃的原因。
到这里,很容易猜到。当字符串为空时,parseLong 会抛出异常,因为"" 无法解析为long。解决这个问题的方法是捕获 NumberFormatException 并将其视为失败。