plusone

1. April 2011

Threadübergreifend GUI ändern

So lieblings Problem, wenn man es nicht kennt ;)

  • Problembeschreibung
    • Activity beinhaltet den View
    • Thread/Runnable läuft nebenbei und soll dem View Text setzten
  • Exception
    • android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
  • Lösung

Ein Handler der in der Activity definiert wird, erlaubt es euch über ihr auf die Activity und den GUI-Thread zu zugreifen.
private Handler handler = new Handler(){
public void handleMessage(android.os.Message msg) {
//DO smth.
}
};
Diese kann auch ggfs. auch als static deklariert werden.
Die Message bietet euch einiges an Objekten und prim. Datentypen, die euch helfen euer Ziel zu erreichen.
Zitat: "arg1 and arg2 are lower-cost alternatives to using setData() if you only need to store a few integer values."

Einfaches handling:
Message instanzieren, Werte füllen und zum Handler schicken.

Message message = new Message();
message.arg1=8; //int 1
message.arg2=15; //int 2
handler.sendMessage(message);


Was euch auch noch behilflich sein könnte ist Timed und AsyncTask.

Ich verabschiede mich und wünsche euch viel Erfolg beim Programmieren.

regards
Alex

Keine Kommentare:

Kommentar veröffentlichen