まず、私はこれを読んでいる:アンドロイドOnPostExecuteからの戻り値を取得します
How to get the return value from onpostexecute method in android?
そしてそれ:なし助けを借りて
How do I return a boolean from AsyncTask?
、多分私彼らが何を言っているのか分からなかった。 ここに私のポーランドがあります: 私はただ私のOnPostExecuteメソッドにあるString値を取得する必要があります。doInBackgroundから、私は私のOnPostExecuteからそれが必要です。
マイコード:
public void max(String build,String cls)
{
BackgroundTask3 myTask = new BackgroundTask3();
myTask.execute(build,cls);
Toast.makeText(getApplicationContext(),"fcur is" + Fcur,Toast.LENGTH_LONG).show();
}
と:
public class BackgroundTask3 extends AsyncTask<String,Void,String>
{
String capacity_url;
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(String result) {
String finalValue;
json_capacity = result;
finalValue=parseMax();
Toast.makeText(getApplicationContext(),"finalValue is" + finalValue,Toast.LENGTH_LONG).show();
super.onPostExecute(result);
}
@Override
protected void onPreExecute() {
capacity_url = "http://www.skedge.co.il/ANCurrentCapacity.php";
}
@Override
protected String doInBackground(String... params) {
String cls,build;
build= params[0];
cls = params[1];
try {
URL url = new URL (capacity_url);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setDoOutput(true);
OutputStream outputStream = httpURLConnection.getOutputStream();
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream,"UTF-8"));
String data_string = URLEncoder.encode("Fclass","UTF-8")+"="+URLEncoder.encode(cls,"UTF-8")+"&"+
URLEncoder.encode("building","UTF-8")+"="+URLEncoder.encode(build,"UTF-8")+"&"+
URLEncoder.encode("hour","UTF-8")+"="+URLEncoder.encode(hour,"UTF-8");
bufferedWriter.write(data_string);
bufferedWriter.flush();
bufferedWriter.close();
//here is the new
InputStream inputStream = httpURLConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"UTF-8"));
StringBuilder stringBuilder = new StringBuilder();
while ((JSON_STRING = bufferedReader.readLine())!= null)
{
stringBuilder.append(JSON_STRING+"\n");
}
outputStream.close();
inputStream.close();
httpURLConnection.disconnect();
return stringBuilder.toString().trim();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
私がやりたいすべてがある: はFcur(パブリック文字列)に、OnPostExecute内部終値文字列である値を割り当てますこれは内部から最大限の機能です。
非常に単純に見えますが、なんらかの理由で私はそれを行うことができません。バックグラウンドスレッドからのコールバックを取得する
これは、asyncTaskコールバックへの応答を実装するためのより良い方法であると考えているため、これも使用します。 –
@ Yarden Rotem、これを試してください:http://stackoverflow.com/a/13815960/3332734 –