fehler durch. setText "Only the original thread that created a view hierarchy can touch its views."

  • Hallo,


    ich versuche gerade Daten von einem Bluetooth Gerät zu lesen und diese dann durch ein Textview anzeigen zu lassen, allerdings kommt dabei immer der im Titel gennante Fehler.
    Bei der Hardware handelt es sich um eine Plattform, die einen 6 Achsen Beschleunigungssensor enthält, welcher direkt die Schritte erkennen kann.
    Mein Problem ist nun,in der Funtkion ready() wird die korrekte Anzahl der Schritte im Log angezeigt, sobald die .setText ausgeführt wird erscheint folgender Fehler:




    Eigentlich müsste doch so mein Text im Textview angezeigt werden oder?
    Schalte ich den toggle switch um, werden wir die Rohdaten vom Beschleunigungssensor und vom Gyroskop im Tectview angezeigt, bei den Schritten funktioniert es nicht obwohl ich soch alles genauso gemacht habe oder?


    Ich habe das ganze vorher mit einen App Template vom Hersteller der Plattform versucht (Link) aber dort nicht in der MainActivity Klasse gearbeitet, sondern in "public class DeviceSetupActivityFragment extends Fragment implements ServiceConnection {", das hat auch soweit funktioniert, bis ich das Textview eingebaut habe, ab da kam immer dieser Fehler, ich hatte gehofft, dass er im neuen Projekt, in dem ich nur in der MainActivity arbeite weg geht. Ich konnte herausfinden, dass es im App Template daran lag, dass ich nicht in einer Unterklasse von Activity war und da das findbyViewId nicht nutzbar ist??


    Das ist mein erstes Java Projekt, ich habe vorher nur mit C oder Matlab gearbeitet und ich bin so langsam echt am verzweifeln, warum läuft es mit dem Textview der Beschleunigungswerte aber nicht mit dem der gezählten Schritte?


    Die MainActivity ist das Text Datei im Anhang


    Der XML Code:



  • Hi und herzlich Willkommen bei uns hier im Forum,


    im Grunde sagt die Fehlermeldung deinen Fehler bereits aus: "mWrongThreadException: Only the original thread that created a view hierarchy can touch its views."
    Du kannst den Text nur in dem Thread respektive Activity oder Fragment setzen, in welchem diese View erschaffen wurde.
    Du darfst also nicht die View aus dem MetaWearBleService ändern, sondern musst die Ergebnisse an die originale Activity zurückgeben, welche dann den Text setzt.
    Die Lösung findest du unter anderem hier.


    Ich hoffe, ich konnte dir weiterhelfen ;)

    MfG,
    Christopher


    Eine gewisses Maß an Freundlichkeit kann man auch von Menschen im Internet erwarten.
    Das Forum basiert komplett auf der Freiwilligkeit ihrer Nutzer und diese sollen sich wohlfühlen! Daher seid bitte freundlich. Danke

  • So ganz verstehe ich nicht, wie ich die Lösung implementieren soll


    Java
    runOnUiThread(new Runnable() {
         @Override
         public void run() {
    
    
    //stuff that updates ui
    
    
        }
    });

    soll in der Activity im Hintergrund (MetaWearBleService??) ausgeführt werden aber in meinem Project gibt es doch nur die MainActivity, die andere wird importiert, ohne das ich sehen kann was darin so alles passiert?!
    Und sobals ich das counted_steps.setText("Steps: " + msg.getData(Integer.class)); in einer anderen Funktion ausführe, funtioniert das msg.getData auch nicht mehr oder?


    im Grunde sagt die Fehlermeldung deinen Fehler bereits aus: "mWrongThreadException: Only the original thread that created a view hierarchy can touch its views."
    Du kannst den Text nur in dem Thread respektive Activity oder Fragment setzen, in welchem diese View erschaffen wurde.

    Wird mein View nicht, genau wie das für die Rohdaten auch, in der Main Activity erzeugt?


    So ganz drin in der Java programmierung bin ich noch nicht, wie man vielleicht merkt :saint:

  • Falls nochaml jemand das Problem hat:



    Ich rufe jetzt die Funktion auf, und Übergebe mit msg den anzuzeigenden Text, mit sensor wird das TextView ausgewählt.



    Eine Frage hätte ich allerdings noch, wie schaffe ich es im Layout, oben in der Toolbar(?) den Namen der App anzuzeigen? so wie hier, jedoch ohne den suchen Button oder das Menü
    mein XML sieht aktuell so aus:

  • Hi,
    entschuldige, dass ich nicht antworten konnte. Meine Zeit ist im Moment leider mehr als knapp...


    Für dein Problem mit der Toolbar kannst du am besten mal in der Doku gucken ;)
    Dazu würde ich auch das offizielle Tutorial empfehlen :)

    MfG,
    Christopher


    Eine gewisses Maß an Freundlichkeit kann man auch von Menschen im Internet erwarten.
    Das Forum basiert komplett auf der Freiwilligkeit ihrer Nutzer und diese sollen sich wohlfühlen! Daher seid bitte freundlich. Danke

Jetzt mitmachen!

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