Mit Wert aus SeekBars rechnen?

  • Hi,


    ich habe mich nun ein paar Tage nicht mehr mit dem coden beschäftigt, dementsprechend ist wieder einiges flöten gegangen. Dass geht recht schnell bei mir. Naja, wie dem auch sei.....


    Ich spiele gerade an einem kleinen "Umrechner" um wieder etwas reinzukommen. In diesem Umrechner stelle ich mir die Werte in einer SeekBar ein. Soweit so gut.


    Ich habe 2 SeekBars, und möchte dass nach dem einstellen der Werte mit "diesen" Werten gerechnet wird und dann auf 3 TextViews aufgeteilt wird und dort angezeigt wird.


    Mein Problem liegt bei dem holen der Werte aus den SeekBars um diese zum rechnen zu nutzen und das Ergebsnis dann weiterzugeben an die TextViews. :/
    Soweit habe ich dass bisher umgesetzt bzw. versucht....



    Ich spiele immer noch einwenig rum und probiere aus bzw. versuche selber auf die Lösung zu kommen, aber irgendwie will das Ganze nicht so wie ich will und sobald ich dann die App starte, schmiert Sie mir ab :(


    Würde mich über einen Denkanstoss sehr freuen......

  • Hallo also da sind auf die Schnelle betrachtet einige Fehler drin.


    Du scheinst Probleme mit „String“ und“ int“ zu haben.



    Zeile 19: geht so nicht. Was du da eventuell zurück bekommst ist die Objektinstanz als String willst du bestimmt nicht. Denke u willst auf den Progress Werst zugreifen .
    String milliliter = String.valueOf(seekBarOne.getProgress());



    Zeile 20: das gleiche



    Zeile 30: „setText()“ erwartet einen String keinen int


    textViewThree.setText(String.valueOf(basis));



    Zeile 34,38, das gleiche

  • Habe es zwischenzeitlich mal abgeändert.



    Bewege ich jetzt die SeekBars, werden die Werte angezeigt wie es sein soll. ABER wenn ich damit "rechnen" möchte, passiert nichts. Es wird "0" (unter test1) angezeigt.
    Nehme ich die Berechnung raus, wird der einfach Wert der SeekBar angezeigt. Irgendwie habe ich ein Problem in der Formel bzw. Berechnung :/

  • Leider wieder falsch.
    textViewThree.setText(String.valueOf(test));
    test ist schon ein String.
    String.valueOf(test1) will einen int und kein String;



    textViewThree.setText(test);
    textViewFour.setText(test1);


    Schaue dir an von welchen Typ deine Variablen sind.

  • Dass hatte ich vergesse wieder rauszunehmen, gab keinen Fehler, deswegen bin ich da nicht mehr drüber gestolpert. Danke dir aber für den Hinweis.


    Aktuell sieht mein Problem wie folgt aus,...…


    ich habe 2 SeekBars.


    Mit einer kann man "ml" einstellen und mit der anderen "Prozent".
    In "viewMengeEingabe & viewProzentEingabe" wird jeweils die aktuelle Einstellung (ml & Prozent) angezeigt.


    In "viewResultBasis" sollen die ml abzüglich der prozentualen ml angezeigt werden.


    Bsp.


    SeekBarOne (ml) = 30ml -> Anzeige in "viewMengeEingabe"
    SeekBarTwo (%) = 8% -> Anzeige in "viewProzentEingabe"


    Rechenweg: 30ml / 100 * 8% = 2,4ml


    "viewResultBasis" soll somit in diesem Fall 27,6ml anzeigen und "viewResultAroma" die "2,4ml".


    Wenn ich nun aber die App starte und die SeekBars verschiebe, passiert erstmal nichts. Erst wenn ich die erste SeekBar auf 100ml schiebe und dann die zweite verschiebe,
    passiert dass was passieren soll, aber eben NUR wenn ich den ersten Regler auf 100ml lasse :/


    Irgendwie stolpere ich gerade nicht drüber, warum sich vorher nichts tut :/


    Edit: Ich glaube das Problem war/ist der Typ des Wertes. Alleine bei 100 werden ganze Zahlen angezeigt, da drunter Kommazahlen. Oder sehe ich dass gerade falsch!? :/
    Kommazahlen werden einfach nur mit *.0 angezeigt. Der Wert geht z.b. nicht auf 0.1 oder ähnliches.

    Ich denke ich bin auf dem richtigen Weg :)

  • Das liegt wahrscheinlich daran, das aroma_in_prozent oder menge_in_ml zu dem Zeitpunkt der ersten Verschiebung noch keinen Wert haben. (Der Standardwert fehlt hier. Dafür könntest du mal debuggen und schauen wie die Werte aussehen, wenn die Methode aufgerufen wird.)
    Alternativ kannst du die Werte statt zu speichern auch direkt auslesen (int value = seekBar.getProgress();).
    Zudem solltest du double statt int benutzen, da du als Ergebnis sonst nur gerundete Werte (die dann leicht abweichen) bekommst.
    Außerdem ist dein Parameter "int progress" im Moment über.

  • Falls du es wirklich nicht hinbekommst, hier die Lösung:
    Allerdings solltest du dir wirklich nochmal die Java-Basics zu Herzen nehmen und nochmal lernen richtig zu debuggen.
    Denn mit Typen (Strings, Int etc.) und Methoden (Rückgabe-Werte/Parameter) richtig um zu gehen, sind komplette Basics und das sollte man schon als Vorraussetzung für Android-Programmierung nehmen.
    Am besten nochmal Basic Java Tutorials anschauen. (Ich kann da zum Beispiel Video2Brain sehr empfehlen ! )


  • @Xcreen, danke dir. Ich habe mir die Lösung jetzt mal noch nicht angeschaut. In double hatte ich die Werte schon geändert. Wie gesagt, ich komme der Sache näher ^^ Jetzt wird auch soweit alles so angeschaut wie ich es eigentlich möchte. Einziges Problem jetzt noch, es werden gefühlte 20 Stellen nach Komma angezeigt :D


    Die Basics werde ich mir auch nochmal anschauen, im großen und ganzen kann/konnte ich einiges schon. Aber ich verlerne sehr schnell wenn ich längere Zeit nicht bei bin. Deswegen mache ich dann so einen Spielkram um (schnell(er)) wieder reinzukommen.

  • Hallo du übergibst zwar in der Zeil4 64 ,95 einen Wert an die Methode „generateResult“ .
    Aber in der Methode wird der Wert gar nicht benutzt, ist somit auch sinnlos einen Wert zu übergeben.


    wo und wie fragst du denn deine Progress werte ab?


    einen Anfangs wert für die erste seekbar setzt du nicht somit ist er 0
    und "berechnung = menge_in_ml / 100;" 0 / 100 in ganze Zahl "int" ist 0, auch 90/100 ist 0,9 und als "int" ist es 0

Jetzt mitmachen!

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