Prägnante Möglichkeit, neue DialogPreference-Klassen zu schreiben?
Ich Schreibe einige benutzerdenierten Dialogen in Android durch die Verlängerung der DialogPreference
Klasse. Aber ich bin immer ein wenig besorgt über die Höhe von boiler plate code, der notwendig ist für diese, wie es scheint eine Menge von Verhalten zu testen.
Zum Beispiel, in diesem Beispiel einer Anzahl preference-dialog ist Recht typisch:
http://svn.jimblackler.net/jimblackler/trunk/workspace/NewsWidget/src/net/jimblackler/newswidget/NumberPreference.java
Insbesondere die onSave()
/RestoreInstanceState()
Methoden und "Klasse SavedState" Teile, die benötigt werden, damit die aktuellen änderungen in der dialog beibehalten werden, auf die Ausrichtung ändert, sind ziemlich langatmig und Komplex.
Hat jemand irgendwelche Tipps für das schreiben DialogPreference Klassen in einem kürzeren Weg?
InformationsquelleAutor der Frage RichardNewton | 2010-12-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das absolute minimum ist:
MyCustomDialogPreference(Context context, AttributeSet attrs)
Konstruktor.super(context, attrs)
.setPersistent(false)
zu geben, um die Präferenz super Klasse, dass Sie weiterhin die Präferenz Wert auf Ihre eigenen.setDialogLayoutResource(int dialogLayoutResId)
.onBindDialogView(View view)
- aktualisieren Sie die Ansicht mit dem Wert(s) Ihrer Wahl.super.onBindDialogView(view)
.onDialogClosed(boolean positiveResult)
- wenn positiveResult wahr ist, dann bestehen die Wert(E) aus Ihrer Sicht auf die SharedPreferences.super.onDialogClosed(positiveResult)
.War dies das absolute minimum, und es wird davon ausgegangen, dass:
Nun einige zusätzliche Optionen:
(a) Wenn Sie möchten, erstellen Sie die dialog-panel-layout programmatisch, implementieren Sie dann auch
onCreateDialogView()
stattsetDialogLayoutResource()
im Konstruktor.(b) Wenn Sie Ihre Präferenz ist, unterstützt nur ein einzelnes Schlüssel/Wert-paar, dann kann man die helper-Methoden speichern
persistBoolean(boolean), persistFloat(float), persistInt(int), persistLong(long), persistString(String)
wenn Sie weiterhin den veränderten Präferenz-Wert in onDialogClosed(). Andernfalls müssen Sie diegetEditor()
- Methode, etwa so:(c) Wenn Sie planen, zu liefern default-Werte aus einem aufgeblähten xml -, dann müssen Sie implementieren auch die
onGetDefaultValue(TypedArray a, int index)
Methode.@RichardNewton, ich weiß, ein Monat ist vergangen, seit du die Frage gestellt. Ich hoffe Sie können immer noch benutzen.
InformationsquelleAutor der Antwort Roy Sharon