所以我确定我错过了一些非常明显的东西,但是有人能看到这个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;
}
您看到的未实例化的任何变量都会被实例化为全局变量,以便在其他方法中使用。我唯一能想到的是mapper方法不会将任何东西映射到contactArray(这是一个ContactInfo []对象。)
答案 0 :(得分:1)
看起来映射器失败了。
如果此代码失败:
contactArray = mapper.readValue(url, ContactInfo[].class);
它会打印一个堆栈跟踪,但会继续运行。
在实际循环之前,contactArray
上没有检查。
contactArray
很可能是空的。
检查JsonParseException
,JsonMappingException
或IOException
的logcat。