2010-09-11 16 views
11

Ich habe Android Number Widget auf meine eigene Anwendung kopiert, aber ich bin ein Problem mit ...Android Number nicht sparend EditText ändert

Wenn jemand manuell den EditText klickt und ändert es über die Tastatur, die Auswahl ist nicht gespeichert. Gibt es einen Listener, den ich implementieren kann, um zu überprüfen, ob der Benutzer den EditText manuell ändert, um ihn als aktuell zu definieren? Oder so?

Antwort

0

Sie können versuchen, eine TextWatcher auf Ihre EditText zu setzen, das gleiche zu tun oder nicht erlauben, ein Benutzer manuell einen Wert einzugeben ...

Oder eine OK-Taste dort halten und die Werte aus dem herausnehmen EditText nur, wenn ein Benutzer auf die Schaltfläche OK klickt

Haben Sie dieses Beispiel versucht?

http://www.quietlycoding.com/?p=5

+0

Ja, genau so habe ich herausgefunden, wie man über NumberPicker kopiert. Und leider möchte ich, dass ein Benutzer seine Punktzahl manuell eingeben kann. –

+0

Haben Sie versucht, einen Textwatcher auf EditText zu setzen? Überprüfen Sie diesen Beitrag http://stackoverflow.com/questions/3665470/measure-length-of-edittext-string-dynamically-in-android/3666012#3666012 – DeRagan

0

Nicht sicher, ob Sie den gleichen wie Number Mine verwenden: http://www.quietlycoding.com/?p=5. Ich habe versucht, einen OnEditorActionListener zur NumberClass hinzuzufügen, scheint es das Problem für mich gelöst.

  • Ändern Sie den NumberPicker.java, damit er OnEditorActionListener erweitert.
  • hinzufügen mText.setOnEditorActionListener (this); zu Number Konstruktor
  • implementieren onEditorAction:

    @Override 
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
        validateInput(v); 
        return false; 
    } 
    

Hoffe, dass es hilfreich sein kann.

1

Ich habe dasselbe Problem mit Nummernpicker http://www.quietlycoding.com/?p=5 und ich löste es durch Hinzufügen OnKeyListener (statt OnEditorActionListener, die bereits von Junzi vorgeschlagen wurde) zu NumberPicker-Klasse. Weitere Schritte sind gleich, so:

  1. Let NumberPicker.java verlängern OnKeyListener
  2. hinzufügen mText.setOnKeyListener (this); zu Number Konstruktor
  3. OnKey implementieren:


public boolean onKey(View v, int keyCode, KeyEvent event) { 
    validateInput(v); 
    return false; 
} 
2

Ich benutzte die Michael Novak Zahl Picker. Obwohl onEditorAction bereits implementiert war, wurde die Eingabe nicht richtig festgelegt. Die einfache Lösung für mich war, validateInput für die textView in getCurrent aufzurufen.

/** 
* @return the current value. 
*/ 
public int getCurrent() { 
    validateInput(mText); 
    return mCurrent; 
} 
1

Wenn Sie Android Number von Android4.0.x verwenden bedeutet, dass Sie den Wert von Number die getValue bekommen kann() verwenden. http://developer.android.com/reference/android/widget/NumberPicker.html#getValue()

Es ist eine einfache Möglichkeit, die Number in Android 4.0.x zu bekommen ...

final NumberPicker np = new NumberPicker(CustomizedListView.this); np.setMinValue(0); np.setMaxValue(100); np.setWrapSelectorWheel(true); Und Sie den Wert np.getValue() Methode unter Verwendung erhalten können.

36

fand ich diese Lösung irgendwo in Android-Entwickler Google-Gruppe verloren:

für Android SDK Number Widget, verwenden Sie einfach:

myNumberPicker.clearFocus(); 

bevor Sie versuchen, seinen Wert zu erhalten. Wenn Sie eine Aktivität nur mit dem NumberPicker und vielleicht einer Schaltfläche oder einem Drehfeld haben und Sie bearbeiten und versuchen, woanders zu klicken, wird der onFocusChangedListener nicht richtig behandelt. Sie müssen also nur noch den Fokus verlieren, bevor Sie getValue() verwenden. Arbeitete wie ein Zauber für mich.

+0

+1, arbeitete für mich – 66CLSjY

+0

Great ... Arbeitete für mich. – AB1209

+0

machte meinen Tag ... danke. – hotzen