plusone

Posts mit dem Label Handler werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Handler werden angezeigt. Alle Posts anzeigen

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