如何在java中为CharSequence赋值空值?

时间:2018-02-09 19:06:50

标签: java android null charsequence

在我的应用中,我使用的是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语句。我在这做错了什么?

2 个答案:

答案 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("")==将检查两个字符串是否是字符串的相同实例,它们不是。