2010-11-27 12 views
0

Ich habe ein Programm, wo ich auf eine Website gehe, XML und Parsing, ziemlich einfach.Problem beim Aktualisieren der Benutzeroberfläche von einem zweiten Thread, wo der erste Thread einwandfrei funktioniert

Hier ist der Code, der ganz gut funktioniert, ist es

final Handler handler = new Handler(){ 

public void handleMessage(Message msg){ 
     progDialog.dismiss(); 
     parse(xmlOut);   
    }}; 

progDialog = ProgressDialog.show (dieser "Working ...", „mache ich etwas in der onCreate Methode gestartet ... "); Gewinde = new Thread() {

 public void run(){ 

xmlOut = doSomeFunction(todaysDate); 
handler.sendEmptyMessage(0); 

}}; 

Thread.start();

Ich habe dann eine Schaltfläche auf der Seite, die die Daten erneut lädt, wenn ein Benutzer ein anderes Datum auswählt, kann nicht denselben Thread erneut ausführen, also habe ich genau den gleichen Code kopiert, änderte alle Variablennamen und setzen es int den OnClickListener für den Button.

Wenn ich auf die Schaltfläche ich eine Ausnahme erhalten klicken und diese

android.view.ViewRoot $ CalledFromWrongThreadException bekommen: Nur das Original-Thread, das eine Ansicht Hierarchie erstellt seine Ansichten berühren kann.

Etwas falsch machen, aber nicht genau was genau. Ich schreibe nicht zu viele Programme mit Threads, daher bin ich sicher, dass mir etwas fehlt.

Antwort

0

Alle Änderungen der Benutzeroberfläche sollten vom selben Thread oder einem Handler in diesem Thread oder von einer AsyncTask aus vorgenommen werden. Check this post um ein wenig über AsyncTasks in Android zu lesen.

Ich rate, dass Sie nicht die Schaltfläche Deklaration richtig gemacht haben oder Sie das Ereignis von einem anderen Thread einstellen. Das wird dir diesen Fehler geben. Wenn Sie immer noch betroffen sind, dann schreiben Sie den entsprechenden Code hier und ich kann versuchen, Ihnen besser zu helfen.

Verwandte Themen