在我的应用中,我使用的是EditText。当edittext中没有文本时,我想指定numberOfYearsBirthday = 0。
我尝试了以下代码并进行了调试。我已经看到即使我的charSequence =""但是它会忽略该语句并转移到else语句,从而导致错误并使我的应用程序崩溃,将null值指定为整数。
xB1.addTextChangedListener(new TextWatcher(){
@Override
public void onTextChanged(CharSequence charSequence, int start, int before, int count) {
if(String.valueOf(charSequence)==null){
numberOfYearsBirthday=0;
}else{numberOfYearsBirthday= Integer.valueOf(charSequence.toString());
}
我也尝试过以下代码
charSequence.toString()==""
此外,以下也是
charSequence ==""
但该程序忽略了我的if语句。我在这做错了什么?
答案 0 :(得分:1)
如果charSequence
为空,则使用String::valueOf
将返回与null
引用不同的文本“null”,因此您的条件将无效。同时执行charSequence.toString()==""
也行不通,因为这不是compare Strings in Java的正确方法。
请改为尝试:
// check if charSequence is null or empty ""
if (charSequence == null || charSequence.toString().isEmpty()) {
numberOfYearsBirthday = 0;
} else {
numberOfYearsBirthday = Integer.valueOf(charSequence.toString());
}
答案 1 :(得分:0)
使用TextUtils.isEmpty(charSequence)
。
第一个解决方案的错误只检查null
,它与空字符串不同。
第二个不起作用,因为在Java中检查字符串值相等的正确方法是stringValue.equals("")
。 ==
将检查两个字符串是否是字符串的相同实例,它们不是。