我的代码的这一部分会检查当用户点击某个联系人时,该联系人实际上有一个电话号码,否则会显示一条消息,而不会执行任何其他操作。
我对我的空指针异常来自哪里感到困惑....
Uri contactData = data.getData();
Cursor c = managedQuery(contactData, null, null, null, null);
if (c.moveToFirst())
{
String stringName = c.getString(c.getColumnIndexOrThrow(People.NAME));
if(c.getColumnIndex(People.NUMBER)!= -1 )
{
stringNumber = c.getString(c.getColumnIndexOrThrow(People.NUMBER));
}
if((!stringNumber.equals(null)) && (stringNumber.length() >= 12))
{
name.setText(stringName);
number.setText(stringNumber);
}
else
{
Context context = getApplicationContext();
CharSequence text = "That contact has an invalid phone number.";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
}
我的错误是“提交结果RESULTINFO失败”,并且它还说这是此行中的nullpointer异常错误:
if((!stringNumber.equals(null)) && (stringNumber.length() >= 12))
在代码的前面,我声明stringNumber初始化为null。我认为,由于if evals的第一部分为false,它甚至不会检查第二部分(我认为错误来自哪里)。
答案 0 :(得分:1)
如果stringNumber
为null,则stringNumber.equals(...
将抛出空指针异常。
改为使用if ((stringNumber != null) ...
。