因此,我确定我在这里遗漏了一些非常明显的东西,但是谁能看到此NullPointerException的来源吗?它出现在for(ContactInfo contact: contactArray)
行中
相关代码如下:
private class DownloadJSONData extends AsyncTask<String, Void, ContactInfo[]> {
@Override
protected ContactInfo[] doInBackground(String... jsonURL) {
mapper = new ObjectMapper();
//Set URL where JSON Data exists
URL url = null;
try {
url = new URL(jsonURL[0]);
} catch (MalformedURLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//Bind JSON data to ConactInfo Array
try {
contactArray = mapper.readValue(url, ContactInfo[].class);
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
for(ContactInfo contact: contactArray) {
//Get URL from each ContactInfo object
String imageSource = contact.getSmallImageURL();
//Download bitmaps into bitmapArray
try {
bitmapArray.add(downloadBitmap(imageSource));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return null;
}
您看到的所有未实例化的变量都将实例化为全局变量,以供其他方法使用。我唯一能想到的是,映射器方法无法将任何内容映射到contactArray(这是一个ContactInfo []对象)。
最佳答案
看起来映射器失败了。
如果此代码失败:
contactArray = mapper.readValue(url, ContactInfo[].class);
它打印一个堆栈跟踪,但继续进行。
在实际循环之前,不对
contactArray
进行任何检查。contactArray
很可能为空。检查logcat中的
JsonParseException
,JsonMappingException
或IOException
。关于java - 找不到NullPointerException的来源,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22257062/