[英]how to return string from AsyncTask to another activity
我已經創建了一個類並使用AsyncTask進行了擴展,現在我想向我返回一個字符串以將另一個類拋出該活動。 它從mysql mDatabase獲取jsonstring
enter code here
public class GetJson extends AsyncTask<Void,Void,String> {
String JSON_STRING;
String json_url;
public String pasString;
Activity ab;
@Override
protected void onPreExecute() {
json_url="https://XXXXXXX.000webhostapp.com/Json_getData_Survey.php";
}
public GetJson(Activity b) {
ab=b;
}
@Override
protected String doInBackground(Void... params) {
try {
URL url =new URL(json_url);
HttpURLConnection httpURLConnection =(HttpURLConnection) url.openConnection();
InputStream inputStream =httpURLConnection.getInputStream();
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream));
StringBuilder stringBuilder=new StringBuilder();
while ((JSON_STRING=bufferedReader.readLine())!=null)
{
stringBuilder.append(JSON_STRING+"\n");
}
bufferedReader.close();
inputStream.close();
httpURLConnection.disconnect();
String strings =stringBuilder.toString().trim();
return strings;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(String result) {
pasString=result;
// Toast.makeText(ab,pasString,Toast.LENGTH_LONG).show();
// json_string1=result;
}
}
我只需要將string1返回到另一個Activity,我在GetJson類中創建了另一個方法來返回此字符串,但是當我顯示此字符串時,它什么也沒有顯示。 請幫忙
它非常簡單,使接口類如下
public interface ResponseListener() {
void onResponseReceive(String data);
}
並像這樣在您的GetJson類中添加此類的實例
public class GetJson extends AsyncTask<Void,Void,String> {
String JSON_STRING;
String json_url;
public String pasString;
Activity ab;
// this is new code
ResponseListener listener;
public void setOnResponseListener(ResponseListener listener) {
this.listener = listener;
}
@Override
protected void onPreExecute() {
json_url="https://XXXXXXX.000webhostapp.com/Json_getData_Survey.php";
}
// now add this code in onPost function
@Override
protected void onPostExecute(String result) {
pasString=result;
listener.onResponseReceive(pasString);
// Toast.makeText(ab,pasString,Toast.LENGTH_LONG).show();
// json_string1=result;
}
現在,當您從活動中調用GetJson時,只需執行以下操作即可;
GetJson json = new GetJson(Activity.this);
json.setOnResponseListener(new ResponseListener() {
@Override
public void onResponseReceived(String data) {
// here you will get your response
}
});
希望你能理解。 :)
嘗試使用活動結果。 您可以為一個活動設置返回值,並在該活動終止時獲取它。
https://developer.android.com/training/basics/intents/result.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.