App stürzt wegen Timer(TimerTask) ab!

19/04/2015 - 18:06 von Daniel Guger | Report spam
Hallo

Ich habe ne App geschrieben, in der folgender Code vorkommt:

for (int j = 0; j < 9; j++) {
if (bFeld[j] == true) {
bButtons[j].setTextColor(Color.GREEN);
}
}

Timer tmr = new Timer();

tmr.schedule(new TimerTask() {
@Override
public void run() {
btn0.setTextColor(Color.BLACK);
}
}, 1000);



Dabei entsteht dieser Fehler:

android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:6915)
at android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:1089)
at android.view.ViewGroup.invalidateChild(ViewGroup.java:4518)
at android.view.View.invalidate(View.java:11711)
at android.view.View.invalidate(View.java:11666)
at android.widget.TextView.updateTextColors(TextView.java:4397)
at android.widget.TextView.setTextColor(TextView.java:3445)
at at.guger.tictactoe.MainActivity$1.run(MainActivity.java:242)
at java.util.Timer$TimerImpl.run(Timer.java:284)


Danke im Voraus!
 

Lesen sie die antworten

#1 Patrick Roemer
19/04/2015 - 19:25 | Warnen spam
Responding to Daniel Guger:
android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.



UI-Komponenten duerfen nur vom UI-Thread aus modifiziert werden. Also
musst Du den entsprechenden Code in ein Runnable packen und ihn via
Activity#runOnUiThread(), View#post() oder Handler#post() fuer
Ausfuehrung auf dem UI-Thread schedulen.

Genau das sagen Dir aber auch die ersten Google- bzw. SO-Ergebnisse zu
"android CalledFromWrongThreadException". O_o

Viele Gruesse,
Patrick

Ähnliche fragen