Ich versuche, eine einfache Objektklasse zu verwenden, die in meiner Anwendung weitergegeben wird. Zuerst verwende ich es, um eine AsyncTask auszuführen. In der onPostExecute
Methode der AsyncTask möchte ich die gleiche Objektklasse erhalten, um einige seiner Setter wieder zu verwenden. Wie kann ich dieses Objekt data
sowohl an die AsyncTask doInBackground
als auch an die onPostExecute
übergeben?Übergeben Sie ein Objekt von Fragment an ASyncTask onPostExecute
Code:
TravelPlanner.java
// Put departure & arrival into model class
data = new ReisData();
data.setDeparture(departureStation);
data.setArrival(arrivalStation);
// Start AsyncTask
GetInfo asyncTask = new GetInfo(this);
asyncTask.execute(data);
GetInfo.java
public class GetInfo extends AsyncTask<ReisData, Integer, String> {
Reisplanner reisPlanner;
View view;
public GetInfo(Reisplanner main) {
this.reisPlanner = main;
view = reisPlanner.getView();
}
@Override
protected void onPreExecute() {
ProgressBar progressBar = (ProgressBar) view.findViewById(R.id.progressBar);
progressBar.setVisibility(View.VISIBLE);
super.onPreExecute();
}
@Override
protected String doInBackground(ReisData... params) {
try {
// Return XML as string with route options
return HttpRequestHelper.downloadFromServer(params);
} catch (MalformedURLException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
DocumentBuilder builder;
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
Document doc = null;
try {
builder = factory.newDocumentBuilder();
doc = builder.parse(new InputSource(new StringReader(result)));
} catch (Exception e) {
e.printStackTrace();
}
// TODO: Get 'ReisData' object
if (doc != null) {
XMLParser.parse(doc);
}
// Start Reisadvies with ReisData class
Fragment fragment = new Reisadvies();
// TODO: Put ReisData class into Bundle
this.reisPlanner.startFragment(fragment);
}
kann es nicht bekommen. kannst du genauer sein! –
In der 'onPostExecute' möchte ich die gleiche' data' Instanz erhalten, die ich verwendet habe, um die AsyncTask in TravelPlanner.java auszuführen. – Blank
übergeben Sie das Objekt durch einen Konstruktor –