ProgressDialog anzeigen funktioniert nicht

  • Antworten:3
Phinix2000
  • Forum-Beiträge: 1

09.07.2018, 16:32:19 via Website

Servus!

Ich bin gerade dabei eine APP mit Artikelimport zu programmieren.
Im folgenden Codeabschnitt soll das Programm Daten aus einer .csv Datei auslesen und in eine ArrayList einfügen. Diese ArrayList wird dann in eine SQLite DB eingepflegt. Das funktioniert ja soweit.

Allerdings würde ich gerne so eine Art Fortschrittsanzeige einbauen. Wie nen Progressdialog. Gesagt getan. Hab nen Progressdialog eingebaut. Allerdings ist es egal an welcher Codeposition ich den Dialog einbaue, er wird immer erst angezeigt, wenn der import berei` if (FileHandler.getArtikelfromFile() != null){

       ProgressDialog  dialog = ProgressDialog.show(acImport.this, "",
               "Importiere! Bitte warten...", true);
        ArrayList<String> art = new ArrayList<String>();

        art = FileHandler.getArtikelfromFile();
        i = importArtikel(art);
        dialog. cancel;
        Toast.makeText(this, i + " Artikel wurden erfolgreich importiert!",     Toast.LENGTH_SHORT).show();

        tvSTATUS.setText(i + " Artikel importiert!");
    } else {
        Toast.makeText(this, "Keine Daten vorhanden!", Toast.LENGTH_SHORT).show();
    }`

Die Funktionen getArtikelfromFile und importArtikel beinhalten einige FOR-Schleifen.

Hab ich irgendwas übersehen? Ich bin etwas ratlos.

L.G. Alex

Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

09.07.2018, 16:55:55 via Website

Hallo Alex,

herzlich wilkommen hier im Forum :)



du hast vergessen dein Dialog per .show() anzuzeigen und am ende per dismiss() wieder zu benden. ;)

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.530

09.07.2018, 18:02:20 via Website

Hi Anzeigen mit Show macht er eigentlich in der ersten Zeile bei der Initialisierung des Dialogs.
Aber eine progressbar sollte in einem eigenen thread laufen nicht im main thraed . Auf jeden Fall nicht in dem Thread wo dein Import läuft.
Starte den progressbar thread bevor du den Import machst und beende ihn am ende wieder.

Oder du machst deinen Import in einem eigenen thread asyctask vielleicht.

https://draeger-it.blog/android-progressdialog-fuer-lange-operationen/

J.

— geändert am 09.07.2018, 19:43:54

Hilfreich?
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

09.07.2018, 21:57:48 via App

Hab ich wohl übersehen ;)

Aber: Gerade der ProgressDialog muss im Main laufen da UI element, sonst kann es nicht angezeigt werden. Lieber den Import in einem anderen Thread bzw. wenn der Import den Thread nicht zum Hängen bringt, geht auch alles im main.

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Kommentieren