Über einen anderen Thread, die UI vom Hauptthread aktualisieren

  • Hallo,

    ich habe eine Activity, die mein Hauptthread ist. Desweiteren habe ich noch einen weiteren Thread, der Daten per Bluetooth empfängt. Mithilfe der Daten die ich empfange, will ich eine Imageview auf dem Hauptthread verändern. Jedoch bekomme ich immer die Fehlermeldung: "Only the original thread that created a view hierarchy can touch its views". Ich habe bereits herausgefunden, dass es die möglichkeit gibt, über "runOnUiThread" auf das Imageview zuzugreifen. Jedoch klappt es nicht. Wo muss das runOnUiThread genau hin und wie viel vom Code muss da rein. Würde es einfach reichen, denn Teil vom empfangen der Daten reinzupacken oder muss die Zeile die versucht auf das Imageview zuzugreifen da rein.

    P.S.: Der Fehler tritt in Zeile 105 auf.

    2 Mal editiert, zuletzt von omax1 (22. Januar 2018 um 22:11)

  • Aber über die Run Methode rufe ich ja die andere Methode in der selben Klasse "empfangenenStringBearbeiten" auf. Läuft die dann nicht mehr in dem Thread? und sobald die Methode abgearbeitet ist müsste er doch zurück in die Run Methode gehen.

  • ja das stimmt schon wenn du die Methode aus der Run aufrufst wird die Methode in dem Thread ausgeführt. Aber wie mir scheint willst du aus dem Thread auf den ui zuzugreifen. Was ist "Spielfeld." ?
    Dies wird über handler Methoden gemacht. Ich denke das für dein Vorhaben
    Asynctask bessere ist.

    Einmal editiert, zuletzt von nono124 (4. Januar 2018 um 17:38)

  • Feld ist meine Activity in dem ein Feld aufgebaut ist. Außerdem ist ein w in dieser Activity enthalten. Und dieser w soll verändert werden mit den Daten die empfangen werden.

    Einmal editiert, zuletzt von omax1 (22. Januar 2018 um 22:13)

  • Hi, wen ich es richtig verstehe willst du eine dauerhafte Verbindung zum Bluetooth Gerät aufbauen. Dafür ist ein Thread nicht sonderlich geeignet. Ein Thread wird gestartet und wenn er durch gelaufen ist beendet er sich.Danach muss er wieder neu erstellt (new …) und gestartet werden. Denke dafür würde sich ein Service besser eignen.
    http://www.programmierenlernenhq.de/tutorial-andro…-und-asynctask/
    http://www.bs7-augsburg.de/aicher/files_c…4_Threading.pdf

    Einmal editiert, zuletzt von nono124 (27. Dezember 2017 um 09:50)

  • Der Thread wird ja aber nie beendet, weil das empfangen neuer Daten in einer while(true) ist. Ist es dann trotzdem eine schlechte idee das so zu machen?

    Ich lese mir mal die Links durch.

    P.S. Die Daten die empfangen werden, kommen von einem 2. Android Gerät auf dem die selbe App läuft.

  • Hallo, sry das ich gestern nicht mehr geantwortet habe mir ist was dazwischen gekommen.

    Habe es jetzt mit dem Handler geschafft und kann die UI verändern. Vielen dank für die Hilfe.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!