Frage

Ich habe Probleme, einen Fortschrittsdialog in meine App zu stecken. In meiner GameEngine -Klasse (die nichts erweitert) habe ich den folgenden Code gezeigt. Die erste Zeile erzeugt eine Laufzeitausnahme, und obwohl ich auf diesen Thread gestoßen bin, scheint es ungefähr den gleichen Fehler zu sein: Android TimerTask löst RunTimeException aus, wenn in Run () hinzugefügt wird, dass ProgressDialog hinzugefügt wird (), Ich verstehe nicht wirklich, wie man die Lösung implementiert. Jede Hilfe wäre sehr geschätzt, danke.

    //Create ProgressDialog
    ProgressDialog dialog = ProgressDialog.show(context, "", 
            "Loading...", true);

    //Set Clusters before level starts
    for (int i = 0; i < 80; i++)
    {
        updateBacteria();
        updateAttraction();
        checkCollisions();
        moveObjectsAwayFromWalls();
    }

    dialog.dismiss();
War es hilfreich?

Lösung

Wenn diese Methode nicht in Ihrem Hauptaktivitätsthread ausgeführt wird, sollten Sie sie ändern. wie? Stellen Sie einen Handler in der Hauptaktivität ein und geben Sie ihn an den Faden (oben). In dem Handler Sie sollten den GUI -bezogenen Teil Ihrer Methode implementieren (dh ProgressDialog). Wenn Sie das zeigen müssen ProgressDialog, Rufen Sie einfach Ihre an Handler und als die Verarbeitung weiter (Ihre Schleife in diesem Fall). Gleiches gilt für die dismiss().

Andere Tipps

Sie können nur Dialoge im UI -Thread anzeigen (eine Hauptklasse, die die Aktivität erweitert). Um dies zu tun, können Sie a schreiben Handler und senden Sie es mit es, um Nachrichten aus dem Non -UI -Thread an den UI -Thread zu senden. Android hat ein Beispiel dafür In ihrem Fortschrittsdialog -Beispiel. Zeigen Sie den Snippet des Code an, den sie unter "Beispiel ProgressDialog mit einem zweiten Thread" haben.

Sie können auch dieselbe Methode wie in der Antwort des von Ihnen bereitgestellten Links befolgen, obwohl ein Handler ein robusterer Ansatz ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top