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
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"
/>

Android Listesini Tercihleri: seçili d...
MySQL tamsayı alanı PHP bir dize olara...
Biçimlendirmek için en iyi yolu tamsay...
BASH: dize bir tamsayı olarak geçerli ...
Nasıl bir MySQL değer bir tamsayı olup...