私は簡単な例を試しています:http ://www.vogella.com/articles/AndroidJSON/article.html
しかし、エラーが発生しました..このエラーが発生する理由を誰かに教えてもらえますか:http://puu.sh/1mGz1
私は簡単な例を試しています:http ://www.vogella.com/articles/AndroidJSON/article.html
しかし、エラーが発生しました..このエラーが発生する理由を誰かに教えてもらえますか:http://puu.sh/1mGz1
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) {
}
}
メインスレッドでデータリクエストを行おうとしています。AsyncTaskを使用してそれを行います。
または、この2行をonCreate()メソッドに追加して、バイパスします。
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
ただし、asynctaskを使用することをお勧めします。