Android Studio - Button ändert Farbe erst nach Delay?

  • Antworten:6
Joshua "Joseph" Jones
  • Forum-Beiträge: 26

29.01.2018, 09:15:10 via Website

Hallo!

Wir haben ein kleines Problem mit unserer Quiz App.
Wir wollen bei einer richtigen/falschen Antwort den Button
in einer an die Antwort angepasste Farbe färben.

rot = falsch
grün = richtig

Code: https://pastebin.com/HkvhsbUY

Wenn wir jetzt auf ein richtiges klicken, dann ändert sich die Farbe erst
nach dem Delay. Was machen wir falsch?

Antworten
swa00
  • Forum-Beiträge: 3.704

29.01.2018, 09:20:33 via Website

Hallo Joshua ,

das macht man unter Android auch nicht so - eher unter C / C++
In dem Moment wird der UI-Thread blockiert.

Euren "Warte Thread" müsstet ihr z.b. als AsyncTask ausführen

— geändert am 29.01.2018, 09:38:00

Liebe Grüße - Stefan
[ App - Entwicklung ]

Joshua "Joseph" Jones

Antworten
Joshua "Joseph" Jones
  • Forum-Beiträge: 26

29.01.2018, 09:32:44 via Website

Könntest du uns eventuell ein Beispiel oder ein Tutorial posten?
Wir sind relativ neu in Java.

Antworten
swa00
  • Forum-Beiträge: 3.704

29.01.2018, 09:37:46 via Website

Ist jetzt nicht euer Ernst , oder ? :)

Tante Google und die originale API - Dokumentation helfen normalerweise gut weiter.

https://developer.android.com/reference/android/os/AsyncTask.html
http://www.vogella.com/tutorials/AndroidBackgroundProcessing/article.html

— geändert am 29.01.2018, 10:09:03

Liebe Grüße - Stefan
[ App - Entwicklung ]

Pascal P.Joshua "Joseph" Jones

Antworten
Joshua "Joseph" Jones
  • Forum-Beiträge: 26

29.01.2018, 10:17:16 via Website

So in etwa?
https://pastebin.com/vXQ5Xs2e

Aber der Button ändert seine Farbe noch immer nicht direkt nachdem wir
auf ihn geklickt haben.

— geändert am 29.01.2018, 11:19:55

Antworten
swa00
  • Forum-Beiträge: 3.704

29.01.2018, 10:23:48 via Website

Das ist das Gleiche in Grün.

Ich kann nur das wiederholen , was ich oben bereits erwähnt habe : AsyncTask
Und ein sehr gutes Tutorial dazu habe ich auch bereits schon geliefert.

— geändert am 29.01.2018, 10:31:46

Liebe Grüße - Stefan
[ App - Entwicklung ]

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

29.01.2018, 13:26:13 via Website

Wenn man etwas verzögert ausführen will, ist ein Handler auch nützlich.

long delay = 3000;
new Handler().postDelayed(new Runnable(...), delay);

Auch da muss man aber mit dem Lifecycle der Activity/Fragments aufpassen und die Aktion stornieren, wenn die Activity geschlossen wird. Sonst crashed es.

— geändert am 29.01.2018, 13:28:01

Joshua "Joseph" Jonesswa00

Antworten