KeyEvent.KEYCODE_MINUS funktioniert nicht

  • 9 Antworten
  • Letztes Antwortdatum
kukuk

kukuk

App-Anbieter (kostenlos)
37
Hallo, ich will mir gerade eine edittext bauen, mit der man auch negative zeichen eingeben kann.

Diese soll aber natürlich so eingestellt sein, das nur am anfang ein "-" stehen darf, und nirgendwo sonst.

Jetzt scheitere ich allerdings schon dabei, die eingabe des Nutzer abzufangen.

Alle anderen zeichen und buchstaben erscheint die MSG. Nur bei dem Minus klappt das nicht. Weiß einer weiter?

Hat auch noch jemand ne idee, wie ich wenn man minus drückt das am anfang nur das minus gesetzt wird, und wenn man plus drückt wird das "-" durch "" ersetzt.

Hatte schon überlegt mit beforetextchanged den inhalt der editbox in eine Variable zu speichern, dann zu überprüfen ob an der ersten stelle sich ein minus befindet. und dann per substring das erste zeichen zu ersetzen.

Vielen dank schonmal für die Hilfe

in der oncreate habe ich folgenden code:
Code:
final EditText edit_stunden= (EditText)findViewById(R.id.edit_stunden);
        edit_stunden.setOnKeyListener(new OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if (keyCode == KeyEvent.KEYCODE_MINUS) { 
                    Toast.makeText(Bemerkung.this, "Test", Toast.LENGTH_LONG).show(); 
                }
                return true;
            }
        });
 
Ich bin ja jetzt nicht so ein Pro in Programmierung, aber hast du dir das durchgelesen?: View.OnKeyListener | Android Developers

keyCode liefert den Code zurück welche physikalische (!) Taste gedrückt wurde.

Weiter: "Key presses in software keyboards will generally NOT trigger this method, although some may elect to do so in some situations. [...]"

Vielleicht bin ich auch aufn Holzweg. (Bin ja auch noch am lernen :/)

Das könnte evtl. eher für dich interessant sein: https://www.android-hilfe.de/forum/...reagieren-auf-eingabe-im-editfeld.567683.html
 
Jo, das sehe ich auch so. Spontan haette ich gesagt, dass KEYCODE_MINUS den Minus-Tasten-Druck abfaengt (etwa wenn man eine Tastatur angeschlossen hat)...

Insgesamt verstehe ich auch nicht ganz was du willst... "negative Zeichen"... w00t?! Ich kenne nur negative Zahlen (und vielleicht noch negative Menschen^^)..
Um was gehts denn bei deinem Projekt - wahrscheinlich lässt sich die Sache recht einfach lösen...
 
Ich habe jetzt mal 2 screenshots gemacht....

Egal an welcher position sich der cursor befindet, soll das Minus als erstes zeichen in der editbox stehen. genauso wenn man auch auf plus drückt soll wenn vorhanden das minus ersetzt werden durch "".


Ich hoffe jetzt ist es verständlicher
 

Anhänge

  • Bild1.png
    Bild1.png
    51 KB · Aufrufe: 241
  • Bild2.png
    Bild2.png
    42,4 KB · Aufrufe: 204
Wäre ein NumberPicker nicht ne Alternative für dich? Oder willst du unbedingt nen EditText verwenden? (wahrscheinlich schon oder? ^^)

PS. InputType auch gesetzt? InputType | Android Developers
 
Zuletzt bearbeitet:
Ne das wäre keine Alternative.

XML Auszug

android:digits="0123456789-"
android:ems="10"
android:inputType="numberDecimal"

Ich habe jetzt nochmal ein bisschen rumprobiert, finde aber keienn Lösungsansatz. Da bei "-" und "+" das KeyEvent ACTION_DOWN noch niemals auslöst.

Hat den jemand noch irgend eine Idee, wo das Problem liegt? Ist das ein Bug in Android?
 
vielleicht hilf das HIER. Habs selber nicht getestet, aber klingt ungefähr nach demselben Problem.
 
  • Danke
Reaktionen: kukuk
Gleiches Problem:

https://www.google.de/#q=android+change+text+in+edittext

Und hier noch eine Erklärung, wie man es implementiert:

Tutorial #11: Using TextWatcher in Android


Der OnKeyListener macht in diesem Fall aus zwei Gründen kein Sinn. Er funktioniert nur mit einer Hardwaretastatur richtig, und die Softwaretastatur kann austauschen werden. In den ausgetauschten Tastaturen können die Keys überschrieben worden sein. Sprich man drückt "a" und bekommt ein ":)". Oder es gibt Tastaturen, wo alle Buchstaben groß geschrieben werden.

Deswegen überprüft man besser die Chars, welche in den EditText eingefügt werden. Dafür gibt es den TextChangedListener.
 
Zuletzt bearbeitet:
Spricht etwas dagegen den obskuren Minus Key nicht einfach als einen Button (R.id...) zu implementieren? Dann mit *-1 den Inhalt zu multiplizieren und neu im ET zu setzen?
 
Zurück
Oben Unten