2013-04-27 70 views
0

我已經成功運行了類似的代碼,但這次它不工作!我真的不明白爲什麼。一切看起來不錯,但JSON在Android中返回空

任何想法?

public class SingleMenuItemActivity extends Activity { 

private static String url = "http://www.tatangalar.com/android/takim_detay.php?takimID=5"; 

private static final String TAG_MACBILGISI = "son10mac"; 
private static final String TAG_10 = "10"; 
private static final String TAG_9 = "9"; 

JSONArray sonuclar = null; 
String filan; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.benim2);   

    JSONParser jParser = new JSONParser(); 

    JSONObject json = jParser.getJSONFromUrl(url); 

    try { 
     sonuclar = json.getJSONArray(TAG_MACBILGISI); 

     for(int i = 0; i < sonuclar.length(); i++){ 

      JSONObject c = sonuclar.getJSONObject(i); 

      String s_on = c.getString(TAG_10); 
      String s_dokuz = c.getString(TAG_9); 

      filan = s_on; 

     } 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 


    TextView txtsecilen = (TextView) findViewById(R.id.son9); 

    txtsecilen.setText(filan); 

} 
} 
+0

請調試您的項目並觀察JSONObject json是否有從url返回的任何值。 – 2013-04-27 16:59:09

+0

和你得到的錯誤是什麼,你可以粘貼錯誤堆棧跟蹤。 – 2013-04-27 17:01:38

+0

這個鏈接將引導你:http://stackoverflow.com/questions/9605913/how-to-parse-json-in-android – 2013-04-27 17:02:04

回答

1

您收到一個NetworkOnMainThreadException,因爲這行代碼:

jParser.getJSONFromUrl(url); 

過去,這是一個警告,但對Android操作系統的新版本則不允許。您不能從主UI線程訪問互聯網,例如您的onCreate()方法。發送您的互聯網命令從一個單獨的runOnUIThread(),Thread/RunnableAsyncTask和您的NetworkOnMainThreadException問題將得到解決。

Android不允許這樣做,以確保您不會在長時間任務中掛起UI,只需強制您在其他線程中執行耗時的活動即可。

runOnUiThread(new Runnable() { 
    @Override 
    public void run() { 
     ... 
     jParser.getJSONFromUrl(url); 
     ... 
    } 
}); 

你可能會想顯示ProgressDialog並關閉它的Thread完成時。 AsyncTask涉及幾個步驟,但非常適合執行此任務,因爲它提供了用於顯示,更新和解除您的ProgressDialog的鉤子。

+0

哪些代碼寫在runOnUIThread()我的朋友?我在你的帖子後嘗試了一些東西,但我沒有再次得到值:( – dgkn 2013-04-27 17:30:10

+0

有一定的事情,那是android無法從JSON獲取值,我不知道爲什麼.. – dgkn 2013-04-27 18:00:24

+0

我得到了解決方案;我剛剛改變了getString到optString,它的工作!謝謝:) – dgkn 2013-04-27 19:21:37

相關問題