0

私はあなたの助けが必要です私は過去2日間これに行き詰まっていました.別のアクティビティからこのAsyncTaskを呼び出して返された文字列を取得しようとしていますが、ネットとSOでいくつかの投稿を読んだ後、できません.やれ。誰かが私が何をする必要があるかを指摘したり、非常に生意気なコードを投稿して説明したりして、何が起こっているのかを知ることができます. 本当に助かりました!

例えば

String jsonString = //returned string from AsyncTask 



public class processJSON extends AsyncTask<Object, Void, String>{

        private Context context;

        public processJSON (Context context){
            this.context = context;
        }

        @Override
        protected String doInBackground(Object... params) {

            int location_id = (Integer) params[0];
            String url = (String) params[1];

            InputStream in = null;
            String result = "";
            JSONObject jArray = null;
            String newURL = url + "?location_id=" + location_id;

            HttpClient client = new DefaultHttpClient();
            HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000); 
            HttpResponse response;
            JSONObject json = new JSONObject();
            try{

                HttpPost post = new HttpPost(newURL);
                //json.put("location_id", location_id);
                StringEntity se = new StringEntity(json.toString());
                se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
                post.setEntity(se);
                response = client.execute(post);

                if (response != null) {
                    in = response.getEntity().getContent(); 
                }
            }catch (Exception e) {
                Log.e("Send JSON", "ERROR: " + e);
                e.printStackTrace();
            }

            try{
                BufferedReader reader = new BufferedReader(new InputStreamReader(in, "iso-8859-1"), 8);
                StringBuilder sb = new StringBuilder();
                String line = null;
                while ((line = reader.readLine()) != null) {
                    sb.append(line + "\n");
                }
                in.close();
                result = sb.toString();
            }catch (Exception e) {
                Log.e("log_tag", "Error converting result " + e.toString());
            }
            return result;
        }
    }
4

1 に答える 1

1

AsyncTaskインスタンス化するときは、コールバックを引数として受け入れる必要があります。次に、実行して完了すると、コールバックを介して生成した値を返すことができます。

于 2012-08-20T22:38:31.787 に答える