wait() ,sleep() oder wie auch immer?

Bobert

Bobert

Fortgeschrittenes Mitglied
15
Hallo,

ich möchte den ProgressDialog 1 Sekunde anzeigen und dann Schiessen.
Wenn ich das wie folgt mache funktioniert das nicht, oder bei this.wait(2000) wird eine Exception gewurfen.

Wie kann ich das verwirklichen? Danke!

Gruß Bobert

Code:
    ProgressDialog progress = ProgressDialog.show(TryDialog.this, "", "Loading. Please wait...", true);
            
    progress.show();
            
    try {
        Thread.sleep(1000);
        //this.wait(1000);
    } catch (Exception e) {
        returnValues = (TextView)findViewById(R.id.returnValues);
        returnValues.setText(e.toString());
    }        
            
    progress.cancel();
 
Code:
final ProgressDialog progress = ProgressDialog.show(TryDialog.this, "", "Loading. Please wait...", true);
        
        progress.show();
                
        Runnable r = new Runnable() {
            @Override
            public void run() {
                progress.cancel();
            }}; 
                
        Handler mHandler = new Handler();
        mHandler.postDelayed(r, 1000);
Zur Erklärung: in der Methode run von Runnable überschreibst du, was nach Ablauf der Zeit passieren soll, Runnable r übergibst du dann an einen Handler, der die run-Methode nach einer bestimmten Zeit ausführt.
 
  • Danke
Reaktionen: Bobert
Hiho,
EDIT: Lilithian war ein paar minuten schneller :) die Lösung sieht auch etwas schöner aus ; ) Aber trotzdem meine Idee:


probier das mal hier aus:

Code:
new Thread(new Runnable() {
            public void run() {
                progress.show();
                try {
                  Thread.sleep(10000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                 }
            progress.cancel();
            }
        }).start();
Damit erzeugst du einen Nebenläufigen Thread, der auf das Android UI zugreift über den progressdialog, und dann diesen Thread einschläft für 10 Sekunden, anschließend den Dialog schließt.
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: Bobert
Hallo Lilithian, Hallo FireDragon,

danke euch. Ja beide Versionen von euch funktionieren!

Danke euch beiden
Gruß Bobert
 
Bobert schrieb:
Hallo Lilithian, Hallo FireDragon,

danke euch. Ja beide Versionen von euch funktionieren!

Danke euch beiden
Gruß Bobert

w0t?

progress.show() in nem nicht gui Thread? Sollte nicht funktionieren dürfen.
 
also ich hatte es voher getestet, und es funktioniert aufjedenfall.. ^^
auch wenns vlt eigentlich keine Gute Lösung ist, aber gerade damit bekommt man ja das GUI blockiert :p
 
Hallo,

@Fr4gg0r Definitiv funktioniert folgendes! Aber warum meinst Du das es nicht funktioniert, das habe ich nicht verstanden.

Gruß Bobert

Code:
final ProgressDialog progress = ProgressDialog.show(TryDialog.this, "", "Loading. Please wait...", true);
           
new Thread(new Runnable() {
    public void run() {
        progress.show();
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        progress.cancel();
    }
}).start();
 
Ja so funzt es, aber auch nur weil das progress.show() nichts macht.
Kannst ja mal folgendes probieren
PHP:
ProgressDialog progress = new ProgressDialog(getApplicationContext());
new Thread(){
  public void run(){
    progress.show();
    progress.dismiss();
  }
}
;)
 
Hallo,

bei deiner Version kommt folgende Fehlermeldung. "Cannot refer to a non-final variable progress inside an inner class defined in a different method"

Gruß Ralf
 
Klugscheißer. :D

Dann mach den ProgressDialog eben final und probiers dann.
 
:tongue:

Gruß Bobert :D
 

Ähnliche Themen

M
Antworten
3
Aufrufe
139
moin
M
C
  • CoderboyPB
Antworten
3
Aufrufe
924
swa00
swa00
OnkelLon
Antworten
13
Aufrufe
1.968
OnkelLon
OnkelLon
Zurück
Oben Unten