android fragment nach bestimmter zeit durch anderes ersetzen

  • Antworten:9
  • Bentwortet
Jeyk
  • Forum-Beiträge: 109

22.04.2015, 07:16:30 via Website

moin!

wie ersetze ich ein fragment nach einer bestimmten zeit automatisch durch ein anderes?

das fragment wird in meiner mainactivity dynamisch erzeugt!

gruss yeyk

Antworten
Gelöschter Account
  • Forum-Beiträge: 2.492

22.04.2015, 07:21:05 via App

Wenn du weißt wie man ein Fragment ersetzt, musst du davor einfach einen Countdown Timer setzen der runterzählt. Das wäre meine erste Idee.

Antworten
Jeyk
  • Forum-Beiträge: 109

22.04.2015, 07:32:09 via Website

also mit countdown(5000) zum beispiel???

weil mit sleep(5000) funktioniert es nicht!!

Antworten
Martin
  • Forum-Beiträge: 756

22.04.2015, 07:46:40 via App

Würde es über die Systemzeit machen - da sparst dir einen Timer und ist sicherlich auch genau genug...

Antworten
Jeyk
  • Forum-Beiträge: 109

22.04.2015, 07:56:17 via Website

und wie bewerkstellige ich das?

hast du ein codesnippet für mich?

sorry aber bei dem thema steh ich noch am anfang!

Antworten
Gelöschter Account
  • Forum-Beiträge: 2.492

22.04.2015, 08:06:14 via App

Beim CountdownTimer ist die Syntax in etwa so falls es nicht stimmt musst du nochmal eben googlen:
CountDownTimer cd = new CountDownTimer (Dauer, 1000){
Public void onTick(Long millisUntilFinished){}
Public void onFinish(){
//Fragment ersetzen
}
}.Start();
also Dauer ist die Zeit die du warten willst und die 1000 bedeutet, dass er in 1000millisekunden (=1 Sekunde) runterzählt.

Antworten
Jeyk
  • Forum-Beiträge: 109

22.04.2015, 08:12:55 via Website

danke schonmal

werde ich nach der arbeit direkt mal probieren :)

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

22.04.2015, 09:58:26 via Website

Eigentlich macht man solche Dinge eher mit einem Handler.
Die "ticks" des Coundown-Timers sind ja nur unnötiger Overhead, wenn es um eine einmalige Aktion geht.

Handler handler = new Handler();
Runnable r = new Runnable() {
    public void run() {
        switchFragment();
    }
};
handler.postDelayed(r, 10000);

Das ist jetzt mal aus dem Kopf geschrieben, keine Garantie auf 100% syntaktische Korrektheit.

Achja:
Thread.sleep() sollte man (wenn überhaupt) nur einsetzen, wenn man sicher ist nicht im UI Thread zu sein.
In diesem Fall würde man aber den UI Thread blockieren und im schlimmsten Fall kommt dann die schöne Systemmeldung "Diese Anwendung reagiert nicht..."
Also: DON'T DO IT ! Es gibt in der Regel IMMER einen besseren Weg als aktives Warten.

— geändert am 22.04.2015, 10:02:15

Antworten
Jeyk
  • Forum-Beiträge: 109

27.04.2015, 06:07:02 via Website

Danke für die zahlreiche Hilfe!

Habs jetzt mit einem Handler hinbekommen!

Mit freundlichem Gruß

Antworten