2013-05-13 19 views
0

`我越來越致命異常:主要在Android和應用程序沒有得到執行在模擬器上?

public class JsonExampleActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_json_example); 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httppost = new HttpPost("http://codeincloud.tk/json_android_example.php"); 
     TextView textView = (TextView)findViewById(R.id.textView1); 
     try { 

      HttpResponse response = httpclient.execute(httppost); 
      String jsonResult = inputStreamToString(response.getEntity().getContent()).toString(); 
      JSONObject object = new JSONObject(jsonResult); 

      String name = object.getString("name"); 
      String verion = object.getString("version"); 
      textView.setText(name + " - " + verion); 

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


     } 
    private StringBuilder inputStreamToString(InputStream is) { 
     String rLine = ""; 
     StringBuilder answer = new StringBuilder(); 
     BufferedReader rd = new BufferedReader(new InputStreamReader(is)); 

     try { 
     while ((rLine = rd.readLine()) != null) 
      answer.append(rLine); 
      } 
     } 

     catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return answer; 
     } 
}` 
+3

你正在做的網絡I /主(UI)螺紋O。這已經是一件壞事了。您的POST請求可能需要很長時間才能執行,同時您已阻止主線程。 – 2013-05-13 07:30:53

+2

正如@大衛建議,你應該創建一個新的線程執行網絡I/O操作(考慮使用AsyncTask http://developer.android.com/reference/android/os/AsyncTask.html) – GVillani82 2013-05-13 07:42:13

+0

也許你可以發佈堆棧跟蹤的錯誤,所以我們可以看到問題是什麼。 – 2013-05-13 07:56:14

回答

-1

異常的基礎似乎是從「FileOutputStream.write」的到來, 你添加的寫入權限,您的清單?

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
+2

你是如何確定的? – 2013-05-13 07:29:21

+0

是的..但仍然得到相同的錯誤 – user2376696 2013-05-13 07:33:38

-1

當您嘗試從某個線程更新您無法做到的視圖時,會發生此錯誤。您將需要從onPostExecute更新您的視圖,或使用runOnUiThread更新您的視圖。

您可以使用runOnUiThread如下:

runOnUiThread(new Runnable() { 
    public void run() {      
     // your code to update the UI thread here    
    } 
}); 
+0

'... onPostExecute或使用runOnUiThread ...'我在這裏沒有看到任何其他'線程'或'AsyncTask' ... – Selvin 2013-05-13 07:39:29

相關問題