15 EYLÜL 2010, ÇARŞAMBA
PreferenceActivity: değer tamsayı olarak kaydet
EditTextPreference
tercihlerimi basit bir aktiviteye gidin:
<EditTextPreference
android:key="SomeKey"
android:title="@string/some_title"
android:summary="..."
android:numeric="integer"
android:maxLength="2"
/>
Bu yapılandırma değeri tamsayı olarak kaydedilen bir yolu var mı? Şimdi sadece sayı girmek için izin verir gibi görünüyor, ama değeri hala string olarak kaydedilir:
Arama:
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
int value = preferences.getInt("SomeKey", -1);
beni java.lang.ClassCastException: java.lang.String
ve: atar
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
String value = preferences.getString("SomeKey", "-1");
değeri alır başarılı.
Nasıl PreferenceActivity
değeri kaydetmek için varsayılan olarak tam sayı olarak?
CEVAP
20 EYLÜL 2010, PAZARTESİ
EditTextPreference uzatmak:
public class IntEditTextPreference extends EditTextPreference {
public IntEditTextPreference(Context context) {
super(context);
}
public IntEditTextPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
public IntEditTextPreference(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected String getPersistedString(String defaultReturnValue) {
return String.valueOf(getPersistedInt(-1));
}
@Override
protected boolean persistString(String value) {
return persistInt(Integer.valueOf(value));
}
}
Daha iyi onSetİnitialValue üzerine olurdu() ve setText() yöntem, ama sonra temel sınıfından bazı kod kopyalamak gerekir. Çözüm simplier, ama oldukça zordur, yukarıda - "dize" in yöntemleri ile bir şeyler yap. Bu sınıf daha da uzatmak için değil deneyin ;-)
XML onu kullanabilirsin:
<package.name.IntEditTextPreference
android:key="SomeKey"
android:title="@string/some_title"
android:summary="..."
android:numeric="integer"
android:maxLength="2"
/>
Bunu Paylaş:
sembol olarak anahtar ile ruby karma f...
Neden kullanıyorum t'şablon param...
Nasıl sözlük olarak değişken anahtar d...
Hızlı eğer bir tam sayı iki tamsayı (d...
EL access Tamsayı anahtar tarafından b...