2013-11-28 158 views
0

我嘗試從URL加載Json。通過在以前的版本中不使用AsyncTask類,它運行良好。
但是直接從主Thread(有人告訴我)在3.2或更高版本的Android版本中不接受getJSONFromUrl(currentURL)
所以,我試了下面的代碼。
這是我的代碼:Android:從URL獲取json - nullPointerException

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)發佈完整的異常堆棧跟蹤,包括「由...引起」的部分(如果有的話); 2)讀取堆棧跟蹤並找出它指向的代碼中的哪一行; 3)在您發佈的代碼中標記該行(例如,通過評論) – 18446744073709551615

+0

發佈完整的堆棧跟蹤,以便我們知道在哪一行它會拋出空指針異常? – Piyush

+0

NullPointerException在行RetreiveListStory(jSonGetFromCurrentURL);.我的問題通過移動RetreiveListStory(jSonGetFromCurrentURL)來解決;到onPostExecute(); –

回答

1

實際上發生在什麼的AsyncTask是當u調用execute ..它啓動一個單獨的線程..和所有其他命令時的OnCreate(),而不等待結果(在你的情況jSonGetFromCurrentURL)形式的AsyncTask .. excuted所以你得到空指針異常..

中寫下這行onPostExecute();

RetreiveListStory(jSonGetFromCurrentURL); 

FYI 的AsyncTask

實際上意味着

AsyncTask <String input, Void progress, String result> 
+0

NullPointerException在行RetreiveListStory(jSonGetFromCurrentURL);.我的問題通過移動RetreiveListStory(jSonGetFromCurrentURL)來解決;到onPostExecute();感謝您的回答。 –

+0

很高興可以幫忙 –

0

爲什麼是ü在此啉 jSonGetFromCurrentURL = jParser.getJSONFromUrl(CURRENTURL)返回null; 返回null;

返回jSonGetFromCurrentURL.而不是null。