我尝试从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
请帮我解决这个问题。
谢谢!
答案 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。