How to handle data output in an Observer?
Posted
by Mannaz
on Stack Overflow
See other posts from Stack Overflow
or by Mannaz
Published on 2010-04-08T08:12:45Z
Indexed on
2010/04/08
10:23 UTC
Read the original article
Hit count: 368
I have an Observable
and an Observer
. The observable does download some stuff in a background thread and calls notifyObservers
to let the observers read the status.
At some point in public void update
the observer tries to updates the GUI
((TextView)findViewById('R.id.foo')).setText("bar");
but it seems like the observable thread calls this method, because the Observable (!!!) throws this:
android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
at android.view.ViewRoot.checkThread(ViewRoot.java:2462)
at android.view.ViewRoot.requestLayout(ViewRoot.java:512)
...
at com.mynamespace.acitivty.TrackActivity.startPlay(TrackActivity.java:72)
at com.mynamespace.acitivty.TrackActivity.update(TrackActivity.java:107)
at java.util.Observable.notifyObservers(Observable.java:147)
at java.util.Observable.notifyObservers(Observable.java:128)
at com.mynamespace.module.communication.Download.stateChanged(Download.java:213)
at com.mynamespace.module.communication.Download.run(Download.java:186)
at java.lang.Thread.run(Thread.java:1058)
Is there some way I can prevent this from happening? I'm sure I'm missing something obvious here.
© Stack Overflow or respective owner