Android:从URL获取json - nullPointerException

时间:2013-11-28 07:13:28

标签: android json nullpointerexception

我尝试从Json加载URL。通过在先前版本上不使用AsyncTask类,它运作良好  但是,在3.2或更高版本的Android版本中,不会直接从主getJSONFromUrl(currentURL)(有人告诉我)拨打Thread。    所以,我尝试了以下代码 这是我的代码:

private static String urlTruyenMoiNhat = "myUrl";
private static String currentURL = urlTruyenMoiNhat;
private static JSONObject jSonGetFromCurrentURL = null;

//some stuff....
currentURL = urlTruyenMoiNhat;
GetJsonAsync getJson = new GetJsonAsync();
getJson.execute();
RetreiveListStory(jSonGetFromCurrentURL);

这是我的GetJsonAsync类:

private class GetJsonAsync extends AsyncTask <String, Void, String> {

    @Override
    protected void onPreExecute() {
        // Do stuff before the operation
    }

    protected String doInBackground(String... params){
        JSONParser jParser = new JSONParser();
        jSonGetFromCurrentURL = jParser.getJSONFromUrl(currentURL);
        return null;
    }

    @Override
    protected void onPostExecute(String result) {
        // Do stuff after the operation
    }
}

我不知道为什么通过例外:

11-28 13:30:44.084: E/AndroidRuntime(828): FATAL EXCEPTION: main
11-28 13:30:44.084: E/AndroidRuntime(828): java.lang.RuntimeException: Unable to start activity ComponentInfo{vn.truyencuoihay/vn.truyencuoihay.MainActivity}: java.lang.NullPointerException  

请帮我解决这个问题。
  谢谢!

2 个答案:

答案 0 :(得分:1)

在AsyncTask中实际发生的是当你调用execute时..它启动一个单独的线程..并且所有其他命令都在Oncreate()中被执行而不等待结果(在你的情况下是jSonGetFromCurrentURL)形式AsyncTask .. 所以你得到空指针异常..

onPostExecute();

中写下这一行
RetreiveListStory(jSonGetFromCurrentURL);

FYI  AsyncTask

实际上意味着

AsyncTask <String input, Void progress, String result> 

答案 1 :(得分:0)

为什么你在这一行返回null- jSonGetFromCurrentURL = jParser.getJSONFromUrl(currentURL);         return null;

返回jSonGetFromCurrentURL.instead of null。