WLAN RSSI-Werte in verschieden Farben anzeigen

  • 2 Antworten
  • Letztes Antwortdatum
H

Hampel

Neues Mitglied
0
Hallo zusammen!!

Ich bräuchte mal einen Tipp/Rat von euch :) Ersteinmal den Code:

Mein Codeschnippsel:
Code:
rssiWerth = wifiInfo.getRssi();
...
editTextRssi.setText( "" + rssiWerth );
               if( rssiWerth > -60 )
                  {
                    editTextRssi.setText( "" + rssiWerth );
                    editTextRssi.setTextColor( Color.GREEN );
                 }
                else
                   if( rssiWerth < -60 | rssiWerth > -65)
                       {
                       editTextRssi.setText( "" + rssiWerth );
                        editTextRssi.setTextColor( Color.YELLOW );
                     }
                     else
                        if( rssiWerth < -65 )
                        {
                         editTextRssi.setText( "" + rssiWerth );
                         editTextRssi.setTextColor( Color.RED );
                         }

Mein Problem ist, dass mir der Wert nicht in Rot angezeigt wird, wenn der Wert
unter -65 fällt. Bei " > -60 " springt die Farbe auch auf grün um und wenn er unter
-60 fällt, dann wird der Wert gelb angezeigt.

Ich bin auch weiter weggegangen um zu testen aber auch dann wenn der Wert
bei -67 liegt, also " < -60 ", bleibt die Anzeige auf gelb und wid nicht rot.

Vielleicht hat jemand von euch eine Idee??!!! Danke für eure Hilfe!!!!

Gruß Hampel
 
Also, bei einem solchen if else Aufbau wird nacheinander geprüft, ob eine Bedingung zutrifft und dann der zugehörige Code ausgeführt.
Sobald also eine Übereinstimmung vorliegt, werden eventuell folgende, mögliche Bedingungen nicht weiter beachtet/ausgeführt.

Z.B. bei -67:
Code:
if( rssiWerth > -60 ) {...}
trifft nicht zu, da -67 nicht größer ist.

Code:
else if( rssiWerth < -60 | rssiWerth > -65) {...}
trifft zu, da -67 kleiner als -60 ist. Die > -65 werden nicht beachtet, da die erste Bedingung schon zutrifft.

Code:
else if( rssiWerth < -65 ) {...}
wird NIE geprüft, da bereits der vorherige if Block gewählt wurde --> Es gibt keine rote Farbe.


Das Problem liegt hier halt in deinem 2. if Block. Du willst ja genau, dass nur Werte zwischen -60 und -65 gelb werden und alles kleiner als -65 rot.
Zunächst mal Du hast hier bitweises Oder | als Operator verwendet, ich nehme mal an Du hast eigentlich das wesentlich üblichere, logische Oder || (2 so ne Striche) gemeint.
Allerdings würde das auch nix bringen, da sobald der erste Teil des ifs zutrifft bei einem (logischen) Oder der 2. eh nicht beachtet wird.
Du brauchst hier stattdessen logisches Und &&.

Ich geb mal das Ganze an, da ich noch ein paar Kleinigkeiten ergänzt hab. Ein paar >= dazu um die Grenzfälle, z.B. genau -60 mitabzudecken. Warum Du immer wieder setText gemacht hast, weiß ich auch nicht, 1x reicht völlig und danach halt die Farbe.
Code:
editTextRssi.setText( "" + rssiWerth );
if( rssiWerth >= -60 ) {
    editTextRssi.setTextColor( Color.GREEN );
} else if( rssiWerth < -60 && rssiWerth >= -65) {
    editTextRssi.setTextColor( Color.YELLOW );
} else if( rssiWerth < -65 ) {
    editTextRssi.setTextColor( Color.RED );
}
 
  • Danke
Reaktionen: Hampel
Hallo @reallord

Vielen Dank!! Hat so geklappt, wie ich mir das vorgestellt habe. Was so kleine Veränderungen alles bewirken:)

Bis dann und Danke nochmal!!
 
Zurück
Oben Unten