Button sofort neu zeichnen

  • Hallo erst mal und schöne Feiertage.


    Ich bin noch ein wirklich blutiger Anfänger. So dieses oder jenes habe ich schon mit Hilfe meiner Lieblingssuchmaschine oder einfach durch ausprobieren herausgefunden.
    Aber jetzt komme ich gerade nicht mehr weiter.


    Folgendes habe ich vor.
    Ich fülle ein Array mit Zufallszahlen. Dieses Array lese ich dann aus und will vier Schalter je nach ausgelesenem Wert umfärben. Das klappt soweit auch.


    Dazu initialisiere ich die Button in der MainActivity.Von dort rufe ich dann auch (mit einem Klick auf einen Button) folgende Methode (ist das der richtige Ausdruck in diesem Fall?) auf.
    Nun wird die For Schleife durchlaufen, Liest den ersten Wert aus dem Array aus und färbt den entsprechenden Button ein.
    Allerdings wird die Änderung erst sichtbar wenn die Methode komplett abgearbeitet ist.
    Ich möchte aber, dass die Schalter nach jedem Schleifendurchlauf bereits die neue Farbe haben.
    Dann warte ich 1000ms und die Schalter sollen alle wieder grau sein.


    Hat jemand eine Idee wie ich das Problem in den Griff bekommen kann?
    Danke schon mal



  • hi :)


    auf den ersten blick kann ich kein problem im code erkennen. Kannst du uns vielleicht noch zeigen wie deine methode aufgerufen wird und was davor und danach passiert?
    Wenn du das thread sleep in deinem MainThread aufrufst, schläft der GUI thread solang wie du angibst, das könnte zumindest mit in dein problem hineinspielen.

  • Danke schon mal das ihr euch meines Problems annehmt. Hier habe ich mal noch einen Codeschnipsel. Ich habe auch meine Kommentare mal drin gelassen, die Importe habe ich mir gespart. Ich kann mir jetzt nicht vorstellen das es mit dem "Schlafen" zusammen hängt. Wenn ich mir ein paar Breakpoints setze und debugge, dann sehe ich das die Schleife durchlaufen wird, an der entsprechenden Stelle pausiert und dann wieder durchläuft bis sie den Endwert erreicht hat. Dann springt das Programm erwartungsgemäß an die Stelle nach dem Aufruf.
    Vielleicht sieht ein geschultes Auge ja was ich falsch mache. Denn der Fehler liegt sicher bei mir ;)


  • So, jetzt gibt es noch eine relevanten Teil.
    Und noch eine kurze Zusammenfassung was ich tue:
    Beim Klick auf den Button_start rufe ich die Methode "sequenceSpielen" (zuvor werden die Zufallszahlen erzeugt und ins Array geschrieben) auf und deaktiviere den Button.
    aus dieser Methode rufe ich wiederum die Methode "arrayAuslesen" auf. Hier sollen die Button umgefärbt werden (mein erster Post).
    Nun habe ich vermutlich alle verwirrt.
    Und ja, ich weiß das ich meinen Code noch deutlich übersichtlicher schreiben muss ;)


    Noch etwas: Bei meinem Post habe ich versehentlich eine Zeile gelöscht. Im original Quellcode ist in Zeile 4/5 noch

    Java
    if (PlaySequense == true)

    Wenn ich sie auskommentiere ändert sich das Verhalten in der Situation allerdings nicht. Sie ist nur wichtig wenn ich das Array auslesen will ohne die Button umzufärben.


    Java
    private void sequenceSpielen() {
                PlaySequense = true;
                ButtonAktiv = true;
                buttonAktivierenDeaktivieren();
                arrayAuslesen();
            }

Jetzt mitmachen!

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