数据传输中断时适配器中的空指针

时间:2013-02-19 20:21:37

标签: android null nullpointerexception adapter

当用户中断传输到数据Feed时,我在Android应用上获得null强制关闭。或者有时如果互联网很慢而且似乎停滞不前,我会得到null

以下是我处理http代码的方法:

        HttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url_select);

        try {
            httpPost.setEntity(new UrlEncodedFormEntity(param));
            HttpResponse httpResponse = httpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();

            // read content
            is = httpEntity.getContent();

        } catch (Exception e) {

            Log.e("log_tag", "Error in http connection " + e.toString());
        }
        try {
            BufferedReader br = new BufferedReader(
                    new InputStreamReader(is));
            StringBuilder sb = new StringBuilder();
            String line = "";
            while ((line = br.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            result = sb.toString();

        } catch (Exception e) {
            Log.e("log_tag", "Error converting result " + e.toString());
        }

        return null;
    }

然后在onPostExecute的{​​{1}}中,此处返回null,如下面的LogCat所示:

AsyncTask

我认为adapter = new ReviewAdapter(getActivity(), r, tf); // Line 1164 是杀死它的r是什么? (null是我传入的TrueType字体)

以下是tf代码:

r

这些 for (String i : reviews) { r[index] = new Review(reviews.get(index), datelist.get(index), userlist.get(index), itemlist.get(index), ratings.get(index), helpfulCount.get(index), chatCounts.get(index), catlist.get(index), titlelist.get(index)); index++; } 通过ArrayLists解析来填充JSON等。

所以我的问题是:我如何处理这个问题?有没有避免空?或者我怎样才能优雅地抛出错误而不是强制关闭?

这是Logcat:

PHP

1 个答案:

答案 0 :(得分:1)

如果第一个try块抛出异常,您可能应该停在那里而不用打扰第二个try块,因为is可能不是{{1}的值如果httpEntity.getContent();引发了异常(在连接不良的情况下会发生异常。

为什么你不能只检查httpClient.execute是否r并向用户说明他们的连接丢失了?