0

私は簡単な例を試しています:http ://www.vogella.com/articles/AndroidJSON/article.html

しかし、エラーが発生しました..このエラーが発生する理由を誰かに教えてもらえますか:http://puu.sh/1mGz1

4

2 に答える 2

1

UIスレッドからサーバーリクエストを行うためにAsyncTaskを使用する ため、コードを次のように変更します。

  ///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を使用してそれを行います。
または、この2行をonCreate()メソッドに追加して、バイパスします。

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

ただし、asynctaskを使用することをお勧めします。

于 2012-11-05T10:10:14.727 に答える