什么错误,虽然我没有println

时间:2015-10-31 16:23:41

标签: java android

这个错误指出了什么?

10-31 21:05:27.567    2496-2522/com.example.talha.appforblog E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #2
Process: com.example.talha.appforblog, PID: 2496
java.lang.RuntimeException: An error occured while executing doInBackground()
        at android.os.AsyncTask$3.done(AsyncTask.java:300)
        at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
        at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
        at java.util.concurrent.FutureTask.run(FutureTask.java:242)
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
        at java.lang.Thread.run(Thread.java:818)
 Caused by: java.lang.NullPointerException: println needs a message
        at android.util.Log.println_native(Native Method)
        at android.util.Log.d(Log.java:139)
        at com.example.talha.appforblog.MainListActivity$DownloadXmlTaskContent.loadXmlFromNetworkContent(MainListActivity.java:294)
        at com.example.talha.appforblog.MainListActivity$DownloadXmlTaskContent.doInBackground(MainListActivity.java:228)
        at com.example.talha.appforblog.MainListActivity$DownloadXmlTaskContent.doInBackground(MainListActivity.java:217)
        at android.os.AsyncTask$2.call(AsyncTask.java:288)
        at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)      at       java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587at java.lang.Thread.run(Thread.java:818)

这是我的asynTask类。我已经实现了2个AsyncTask ..首先asynctask确实给出了任何错误但是当我实现了这个(第二个)AsyncTask时,这就是我得到的消息

private class DownloadXmlTaskContent extends AsyncTask<String, Void,List<ContentGetter.Content> > {
    private Exception mException = null;
    private Context mContext;

    public DownloadXmlTaskContent(Context context) {
        mContext = context;
    }
    @Override
    protected List<ContentGetter.Content> doInBackground(String... urls) {
        try {

            return loadXmlFromNetworkContent(urls[0]);

        } catch (IOException e) {
            mException = e;
        } catch (XmlPullParserException e) {
            mException = e;
        }
        return null;
    }

    @Override
    protected void onPostExecute(List<ContentGetter.Content> results) {
        if (results != null && mException == null) {

        } else {
            if (mException instanceof IOException){
            } else if (mException instanceof XmlPullParserException) {
            }
        }


    }

    private  List<ContentGetter.Content> loadXmlFromNetworkContent(String urlString) throws XmlPullParserException, IOException {
        InputStream stream = null;
        // Instantiate the parser
        ContentGetter contentgetter = new ContentGetter();


        // for fetching the list view
        List<ContentGetter.Content> content = null;
        String summary = null;

        try {
            stream = downloadUrl(urlString);
            content= contentgetter.parse(stream,urlBlogtitle);
            Log.d(TAG,content.get(0).summary);

            // Makes sure that the InputStream is closed after the app is
            // finished using it.
        } finally {
            if (stream != null) {
                stream.close();
            }
        }

        return content;
    }



    // Given a string representation of a URL, sets up a connection and gets
// an input stream.
    private InputStream downloadUrl(String urlString) throws IOException {
        URL url = new URL(urlString);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setReadTimeout(10000 );
        conn.setConnectTimeout(15000 );
        conn.setRequestMethod("GET");
        conn.setDoInput(true);
        // Starts the query
        conn.connect();

        return conn.getInputStream();
    }

2 个答案:

答案 0 :(得分:0)

Log.d(TAG,content.get(0).summary);行中,content.get(0).summary可能是null

在尝试打印之前,您应该检查是否null,和/或在catch块中添加try声明

Log.d(TAG,content.get(0).summary != null ? content.get(0).summary : "NULL");

try {
    stream = downloadUrl(urlString);
    content= contentgetter.parse(stream,urlBlogtitle);
    Log.d(TAG,content.get(0).summary != null ? content.get(0).summary : "NULL");

    // Makes sure that the InputStream is closed after the app is
    // finished using it.
} catch (NullPointerException e) {
    Log.d("ERROR","Response is null!");
} finally {
    if (stream != null) {
        stream.close();
    }
}

答案 1 :(得分:0)

确保没有将null传递给Log.d()方法。在代码中检查它:Log.d(TAG,content.get(0).summary);