DialogFragment und Asynctask

  • Antworten:3
LitteM
  • Forum-Beiträge: 141

18.06.2013, 23:01:10 via Website

Hallo zusammen,

da showDialog ja nicht mehr aktuell ist habe ich mich an ProgressDialogFragment versucht. Da ich irgendwie keine passenden Beispiele per Google gefunden habe um meine "funktionierende" Version abzuchecken wollte ich mal nachfragen ob das okay ist was ich mir zusammen-gecodet habe.

In meiner MainActivity folgendes deklariert:
1ProgressDialogFragment test;

Eine Innere Klasse hinzugefügt:
1class ProgressDialogFragment extends DialogFragment{
2
3 ProgressDialog dialog;
4
5 @Override
6 public Dialog onCreateDialog(Bundle savedInstanceState) {
7 dialog = new ProgressDialog(getActivity());
8 dialog.setMessage("Downloading file. Please wait...");
9 dialog.setIndeterminate(false);
10 dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
11 dialog.setMax(100);
12 dialog.setCancelable(true);
13 return dialog;
14 }
15
16 public void setProgress(int value) {
17 dialog.setProgress(value);
18 }
19}

Dialog in der onPreExecute erzeugen:
1test = new ProgressDialogFragment();
2 test.show(getFragmentManager(), "MyProgressDialog");

publishProgress in der doInBackground:
1publishProgress(""+(int)((sum*100)/length));

onProgressUpdate:
1test.setProgress(Integer.parseInt(progress[0]));

onPostExecute:
1test.dismiss();


Ist das okay wie ich dieses Fragmentzeugs hier verwende?
Der Logcat schmeißt mir noch ne Info vom Choreographer: "Skipped xx frames! The application may be doing too much work on its main thread."
Falls das jedoch nicht weiter von belang sein sollte, auch gut. Falls doch liegt es wohl an meinem Code.
Zum Schluss noch eine Frage: Gibt es eine elegantere Lösung als Thread.sleep in der onPostExecute reinzutun damit der Dialog bei kleinen Datein auch so lange offen bleibt damit man was "erkennt" ?


Danke schonmal für Meinungen :)

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

19.06.2013, 09:46:54 via Website

Wenn du Fragments benutzt, schmeiss die Dummen Async Task direkt mit raus und benutze Loader :)

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
LitteM
  • Forum-Beiträge: 141

19.06.2013, 19:05:35 via Website

Habe "Fragments" nur benutzt weil eben das andere wohl veraltet war :grin:
Bei dem was ich auf die Schnelle über google zu "loader" gefunden habe ist mir nich so wirklich klar wie das funktionieren sollte.
Hättest du mir vielleicht eine Seite die erklärt wie ich das zum Datei download von server/internet anwenden kann?:rolleyes:

Grüße

Antworten