这是我的代码:
if (!quizDescs[0].isEmpty()) {
mDescText.setText(quizDescs[0]);
} else {
mDescText.setVisibility(View.INVISIBLE);
}
因此,当这段代码运行,并且if条件返回true时,一切都很好,但是,如果它返回false,则表示存在NullPointerException,并指向包含if语句的代码行。 / p>
我检查条件对吗?为什么它会返回NullPointer?!
解答:
if (quizDescs[0] == null) {
mDescText.setVisibility(View.INVISIBLE);
} else {
mDescText.setText(quizDescs[0]);
}
答案 0 :(得分:2)
如果quizDesc [0]是String,则可以执行
if(!StringUtility.isEmptyOrNull(quizDesc[0])){
mDescText.setText(quizDescs[0]);
}else {
mDescText.setVisibility(View.INVISIBLE);
}
顺便说一下,
空和空是不一样的
考虑
String s; //Initialize to null
String a =""; //A blank string
使用
始终是一个好习惯try{
//Your code here..
}catch(Exception e){
e.printStacktrace();
}
答案 1 :(得分:1)
如果quizDescs
或quizDescs[0]
为空,您将获得NullPointerException
。
显然,如果isEmpty()
返回false,则表示isEmpty()
已执行,因此当条件返回true时quizDescs[0]
不为空,这就是它的工作原理。
要么确保quizDescs
和quizDescs[0]
都不为空,要么将条件更改为:
if (quizDescs != null && quizDescs[0] != null && !quizDescs[0].isEmpty()) {
....
} else {
....
}
答案 2 :(得分:0)
您有一个错误,因为quizDescs
为空,所以当您尝试在条件中获取quizDescs[0]
时,您会尝试获取第一个null对象项。
答案 3 :(得分:0)
if-line导致NullPointerException的唯一可能方式是quizDescs本身为null或第一个元素quizDescs [0]为null。尝试将quizDescs提取到本地变量中以进行调试,并检查其内容。
您可以使用空字符串初始化数组或添加null检查 - 或者更好地检查逻辑如何null是可能的条件。通常应该避免使用空值(对于类似的情况,请参阅Bloch, Effective Java 2nd Edition, item 43)。