B
Boris0815
Fortgeschrittenes Mitglied
- 4
Hallo,
ich versuche gerade in meiner App einen ProgressDialog einzubauen, da ich ein paar Methoden habe, die evtl. mal 2-3 Sekunden brauchen. Ich bekomm es aber nicht richtig umgesetzt.
Zuerst mal meine AsyncTask-Klasse:
In meiner Activity rufe ich den Dialog folgendermaßen auf:
Die Methoden InitInfoPages() und InitRahmenValues() benötigen die besagten 2-3 Sekunden.
So wie beschrieben funktioniert es nicht, da erst die Methoden ausgeführt werden, dann kurz der Dialog erscheint und fertig.
Ich müsste ja eigentlich die beiden Methoden in der doInBackground aufrufen, oder?
Dies funktioniert aber nicht, da in den Methoden einige GUI-Sachen gemacht werden, die dann nicht mehr funktionieren. (InflaterException)
Kann mir bitte jemand helfen, wie ich wo den ProgressDialog aufrufen muss?
Ich hatte gehofft, dass man einfach sagt showDialog() -> MachWas() -> DismissDialog().
Gruß
Boris
ich versuche gerade in meiner App einen ProgressDialog einzubauen, da ich ein paar Methoden habe, die evtl. mal 2-3 Sekunden brauchen. Ich bekomm es aber nicht richtig umgesetzt.
Zuerst mal meine AsyncTask-Klasse:
Code:
import de.facentis.RahmenActivity;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
public class ShowProgressDialogTask extends AsyncTask<Void, Void, Void> {
Context context = null;
//Constructor
public ShowProgressDialogTask(Context context) {
this.context = context;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
((RahmenActivity)context).dialog = ProgressDialog.show(context, "", "Please wait for few seconds...", true);
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
((RahmenActivity)context).dialog.dismiss();
}
@Override
protected Void doInBackground(Void... params) {
try {
} catch (Exception e) {
}
return null;
}
}
Code:
...
public ProgressDialog dialog = null;
...
private void InfoLoad(){
try{
ShowProgressDialogTask progressDialog = new ShowProgressDialogTask(this);
progressDialog.execute(null, null, null);
InitInfoPages();
InitRahmenValues();
}catch(Exception ex){
Log.i("erer", ex.getMessage());
}
}
...
So wie beschrieben funktioniert es nicht, da erst die Methoden ausgeführt werden, dann kurz der Dialog erscheint und fertig.
Ich müsste ja eigentlich die beiden Methoden in der doInBackground aufrufen, oder?
Dies funktioniert aber nicht, da in den Methoden einige GUI-Sachen gemacht werden, die dann nicht mehr funktionieren. (InflaterException)
Kann mir bitte jemand helfen, wie ich wo den ProgressDialog aufrufen muss?
Ich hatte gehofft, dass man einfach sagt showDialog() -> MachWas() -> DismissDialog().
Gruß
Boris