0

我正在尝试一个简单的例子:http ://www.vogella.com/articles/AndroidJSON/article.html

但是出现错误.. 谁能告诉我为什么会出现此错误: http: //puu.sh/1mGz1

4

2 回答 2

1

使用AsyncTask 从 UI Thread 发出服务器请求,因此将代码更改为:

  ///Your code...
      @Override
      public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        new LongOperation().execute("");
      }

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

          @Override
          protected String doInBackground(String... params) {
                //call readtwitterFeed() method here
                String readtwitterFeed=readtwitterFeed(); 

                return readtwitterFeed;
          }      

          @Override
          protected void onPostExecute(String result) {      
                try {
                  JSONArray jsonArray = new JSONArray(result);
                  Log.i(ParseJSON.class.getName(),
                      "Number of entries " + jsonArray.length());
                  for (int i = 0; i < jsonArray.length(); i++) {
                    JSONObject jsonObject = jsonArray.getJSONObject(i);
                    Log.i(ParseJSON.class.getName(), jsonObject.getString("text"));
                  }
                } catch (Exception e) {
                  e.printStackTrace();
                }     
          }

          @Override
          protected void onPreExecute() {
          }

          @Override
          protected void onProgressUpdate(Void... values) {
          }
    }
于 2012-11-05T10:10:32.343 回答
0

您正在尝试在主线程上发出数据请求。使用AsyncTask来完成。
或者在 onCreate() 方法中添加这 2 行来绕过它。

    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy); 

我建议使用 asynctask。

于 2012-11-05T10:10:14.727 回答