因此,我确定我在这里遗漏了一些非常明显的东西,但是谁能看到此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中的JsonParseExceptionJsonMappingExceptionIOException

关于java - 找不到NullPointerException的来源,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22257062/

10-10 02:26