gpt4 book ai didi

android - 在 AsyncTask 的 onPostExecute 方法中获取的返回值

转载 作者:行者123 更新时间:2023-11-29 20:43:41 24 4
gpt4 key购买 nike

所以我调用 checkbetoutcome()来自另一个activity .我的目标是执行 AsyncTask并返回 finaloutcomesonPostExecute() 中填充的变量方法。我如何实现这一点,这样我就不会得到一个空的 finaloutcomesAsyncTask 以来的变量在后台运行并返回 finaloutcomes ,代码在 onPostExecute 之前执行方法完成了吗?

public HashMap<String,String> checkbetoutcome() {
new LoadAllGamet().execute();
return finaloutcomes;
}

**Check_Bet.java

public class CheckBet {
private String bet;
private ArrayList<Map<String,String>> allbetsmap = new ArrayList<>();
private ArrayList<String> userstatuses = new ArrayList<>();
private String status = "open";
private static String url_check_bet = "****";
String resulttest;
private ArrayList<Map<String,String>> passtocheck = new ArrayList<>();
private String currentitem;
private String game;
private onResultListener lister = new onResultListener() {
@Override
public void showResult(HashMap<String, String> finaloutcomes) {

}
};
private String c = "";
JSONArray allgames = null;
private HashMap<String,String> finaloutcomes = new HashMap<String,String>();


public CheckBet(String bet, ArrayList<Map<String,String>> passtocheck) {
this.bet = bet;
this.passtocheck = passtocheck;

}


public HashMap<String,String> checkbetoutcome() {
new LoadAllGamet(onResultListener lister).execute();
return finaloutcomes;
}
public interface onResultListener {
void showResult(HashMap<String,String> finaloutcomes);
}


class LoadAllGamet extends AsyncTask<String, String, String> {
onResultListener listener;
public LoadAllGamet(onResultListener listr) {
listener = listr;
}
@Override
protected void onPreExecute() {
super.onPreExecute();

}

protected String doInBackground(String... args) {
// HttpParams httpParameters = new BasicHttpParams();
// HttpConnectionParams.setConnectionTimeout(httpParameters, 250000);
//HttpConnectionParams.setSoTimeout(httpParameters, 250000);
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(url_check_bet);
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("param", bet));
// Log.d("CURRENTITEM", currentitem);
try {
post.setEntity(new UrlEncodedFormEntity(params));
} catch (IOException ioe) {
ioe.printStackTrace();
}
try {
HttpResponse response = client.execute(post);
Log.d("Http Post Responsecxxx:", response.toString());
HttpEntity httpEntity = response.getEntity();
InputStream is = httpEntity.getContent();
JSONObject jObj = null;
String json = "";
client.getConnectionManager().closeExpiredConnections();
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {

if (!line.startsWith("<", 0)) {
if (!line.startsWith("(", 0)) {
sb.append(line + "\n");
}
}
}

is.close();
json = sb.toString();

json = json.substring(json.indexOf('{'));
// Log.d("sbsssssssssss", json);
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
allgames = jObj.getJSONArray("bets");
// Log.d("WHAT IS MY ARRAY?", allgames.toString());

for (Integer i = 0; i < allgames.length(); i++) {
HashMap<String,String> statuses = new HashMap<>();
JSONObject c = allgames.getJSONObject(i);
JSONArray currentbet = c.getJSONArray("bet");
Log.d("Single array",currentbet.toString());

// Storing each json item in variable

for (Integer a = 0; a < currentbet.length();a++) {
JSONObject d = currentbet.getJSONObject(a);
String Result = d.getString("Result");
String id = d.getString("gid");
Log.d("RESULTS",Result);

statuses.put(id, Result);
}
allbetsmap.add(i, statuses);
Log.d("ddd", statuses.toString());
Log.d("AAA", allbetsmap.get(i).toString());


}



} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}


}
catch (IOException e) {
e.printStackTrace();
}




return "";
}



@Override
protected void onPostExecute(String param) {
Log.d("SIZE",Integer.toString(allbetsmap.size()));
//ArrayList<Map<String,String>> allbetsmap = new ArrayList<>();
//ArrayList<Map<String,String>> passtocheck = new ArrayList<>();

if (allbetsmap.size() == passtocheck.size()) {
for (int i = 0; i < allbetsmap.size();i++) {
if (allbetsmap.get(i).size() == passtocheck.get(i).size()) {
String finaloutcome = "won";
for (String a : allbetsmap.get(i).keySet()) {
String f = allbetsmap.get(i).get(a);
if(f.equals("null")) {
finaloutcome = "open";
}
else if (! (f.equals(passtocheck.get(i).get(a)))) {
finaloutcome = "lost";
break;
}
}
finaloutcomes.put(Integer.toString(i),finaloutcome);
}
}
}
Log.d("Vital",finaloutcomes.toString());
listener.showResult(finaloutcomes);

}

}

// CHANGE THIS AT THE END
}

**

最佳答案

创建界面

public interface onResultListener {
void showResult(String finalOutcome);
}

Activity 实现接口(interface)

public MyActivity extends Activity implements onResultListener {
public void getResult() {
new LoadAllGamet(this).execute();
}

void showResult(String finalOutcome){
// result from your asynctask
}
}

从AsyncTask调用接口(interface)方法

 public class LoadAllGamet extends AsyncTask<String, String, String> {
onResultListener listener;
public LoadAllGamer(OnResultListenre listr) {
listener = listr;

@Override
protected void onPostExecute(String param) {

Log.d("SIZE",Integer.toString(allbetsmap.size()));
//ArrayList<Map<String,String>> allbetsmap = new ArrayList<>();
//ArrayList<Map<String,String>> passtocheck = new ArrayList<>();

if (allbetsmap.size() == passtocheck.size()) {
for (int i = 0; i < allbetsmap.size();i++) {
if (allbetsmap.get(i).size() == passtocheck.get(i).size()) {
String finaloutcome = "won";
for (String a : allbetsmap.get(i).keySet()) {
String f = allbetsmap.get(i).get(a);
if(f.equals("null")) {
finaloutcome = "open";
}
else if (! (f.equals(passtocheck.get(i).get(a)))) {
finaloutcome = "lost";
break;
}
}
finaloutcomes.put(Integer.toString(i),finaloutcome);
}
}
}
Log.d("Vital",finaloutcomes.toString());
lister.showResult(finalOutCome);
}
}

关于android - 在 AsyncTask 的 onPostExecute 方法中获取的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30652657/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com