1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Dialog im Thread starten

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von jim, 14.02.2011.

  1. jim, 14.02.2011 #1
    jim

    jim Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    74
    Erhaltene Danke:
    0
    Registriert seit:
    02.05.2010
    Hallo liebes Froum,

    ich habe gerade das Problem das ich in einem Thread bestimmte Aufgabe löse und für den User ein Dialog mit Ladebalken angezeit wird. Dies scheint aber nicht die richtige vorgehensweise zu sein und zu dem bekomme ich ab und zu einen Fehler.


    Activity has leaked window that was originally added here....

    PHP:
     dialog = new ProgressDialog(Vibrations.this);
                 
    dialog.setCancelable(false);
                 
    dialog.setMessage("Save values to file...");
                 
    dialog.show();
                 
                 new 
    Thread() {
                    
                   public 
    void run() {}}
    dialog.dismiss();.start()
    Ich habe auch schon diverses Lsg. gefunden. Leider verstehe ich sie nicht ganz. Wie wäre der richtige Weg den Progressbalken anzuzeigen?

    Vielen Dank jim
     
  2. swordi, 14.02.2011 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    benutze die klasse asynctask. die bietet dir alles was du brauchst.

    du kannst kein ui element aus einem thread, der nicht der main thread ist, verändern.
     
    J4M350N bedankt sich.
  3. rushzero, 14.02.2011 #3
    rushzero

    rushzero Erfahrener Benutzer

    Beiträge:
    171
    Erhaltene Danke:
    36
    Registriert seit:
    20.10.2010
    Oder einfach mit einem Handler den "Effekt" auslösen.
     
  4. jim, 23.02.2011 #4
    jim

    jim Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    74
    Erhaltene Danke:
    0
    Registriert seit:
    02.05.2010
    Hmm, habs jetzt hinbekommen, aber irgendwie ist es mir nicht mögl. das in einer extra .java Datei als extra Klasse zu halten, da er dann " new ProgressDialog(Vibrations.this);" nicht mehr kennt. Ist diese variante nicht möglich??

     
    Zuletzt bearbeitet: 23.02.2011
  5. rushzero, 24.02.2011 #5
    rushzero

    rushzero Erfahrener Benutzer

    Beiträge:
    171
    Erhaltene Danke:
    36
    Registriert seit:
    20.10.2010
  6. jim, 24.02.2011 #6
    jim

    jim Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    74
    Erhaltene Danke:
    0
    Registriert seit:
    02.05.2010
    Hey, also ich bin immer dankbar für Antworten. aber manchmal ......

    Meine Frage scheint ja zu implizieren das ich nicht das ausreichende Verständnis habe das Problem zu erfassen(bzw. dessen Lsg.) und leider hilft mir der Link da auch nicht weiter.. .
    Nicht jeder kann ohne etwas Erläuterung alles erfassen aber für sowas ist ein Forum ja da. man muss ja nicht antworten wenn man denkt die anderen sind alle zu "blöd.." .

    Tut mir leid das ich mich hier kurz ärgere, hatte nur gerade ein paar MathePrüfungen und war in anderen Forum(Mathe) unterwegs wo ich mich sehr geärgert habe über manche Klugscheißer.

    Es ist halt einfach so, dass manche Menschen einfache Dinge nicht verstehen(so wie ich gerade) und da hilft dann auch kein kurzer Kommentar.

    Sei mir nicht böse, aber wenn nur ein Mensch in dieser hinsicht sensibilisiert wird reicht mir das schon aus.

    bitte nimms nicht persöhnlich LG Jim
     
  7. mr.freeze, 24.02.2011 #7
    mr.freeze

    mr.freeze Android-Hilfe.de Mitglied

    Beiträge:
    74
    Erhaltene Danke:
    1
    Registriert seit:
    02.09.2010
    @swordi
    du hattest in dem anderen AsyncTask-Thread geschrieben
    das onPreExecute is doch ein anderer Thread!?

    Gruß
     
  8. rushzero, 24.02.2011 #8
    rushzero

    rushzero Erfahrener Benutzer

    Beiträge:
    171
    Erhaltene Danke:
    36
    Registriert seit:
    20.10.2010
  9. Zoopa, 24.02.2011 #9
    Zoopa

    Zoopa Android-Experte

    Beiträge:
    599
    Erhaltene Danke:
    173
    Registriert seit:
    28.07.2010
    onPreExecute(), onPostExecute() und onProgressUpdate() werden automatisch im UI-Thread ausgeführt, daher darf man in diesen Methoden GUI-Elemente bearbeiten. Nur doInBackground() wird in einem neuen Thread ausgeführt.

    Zusätzlich gibt es noch die Methode publishProgress(), die man in doInBackground() aufrufen darf. Dadurch wird dann onProgressUpdate() ausgeführt (im UI-Thread). So kann man z.b. einen Ladebalken machen, der sich ändert, während doInBackground() noch am arbeiten ist.
     
    Zuletzt bearbeitet: 24.02.2011
    mr.freeze bedankt sich.

Diese Seite empfehlen