Bir renk değeri kaydederek çalışmak için varolan bir Tercih alt sınıfını almaya çalışıyorum. Dersi yazmamıştım, ama android-7 ve üstü üzerinde çalışıyor olması gerekiyordu (bir android-9 hedefini derledim). Tam kaynak kodu available here. İşte tercihi kaydedilir nerede:Android özel tercih değeri kaydedilmedi
@Override
public void onColorChanged(int color) {
if (isPersistent()) {
boolean ret = persistInt(color);
}
// (update preview box, other stuff)
}
kullanarak hata ayıklama çıkışı anlarım isPersistent()
getiri true
ancak persistInt()
getiri false
söyledi. Android documentation'a göre, persistInt()
tercihi kalıcı olup olmadığını döndürür; bunlar farklı değerleri nasıl iade edebilir? (Not: setPersistent(true)
açıkça constructor'dan çağrılır.)
Her durumda, değer kaydedilmez. getPersistedInt(defaultValue)
numaralı çağrı, daha sonra sınıfın aynı örneğinde bile varsayılan değeri döndürür. Aşağıdaki kodda, getPersistedInt()
her zaman çağrılır ve her zaman mDefaultValue
döndürür.
public int getValue() {
try {
if (isPersistent()) {
mValue = getPersistedInt(mDefaultValue);
}
} catch (ClassCastException e) {
mValue = mDefaultValue;
}
return mValue;
}
Bu neden olduğunu ve nasıl tercih kalıcıdır emin olabiliriz?
FWIW, burada aynı zamanda bir 'ColorPreference' olarak paketlenmiş bir' ColorMixer' widget'ı ile benim bir proje, var: https://github.com/commonsguy/cwac-colormixer – CommonsWare
Teşekkür bağlantıdan, Seninkilere baktım ama buna karşı karar verdim, çünkü RGB sürgüleri dokunmatik olmayan telefonlar için kullanışlı olsa da, uygulama yine de bir dokunmatik ekran gerektiriyor ve ben bir çeşit HSL seçiciyi tercih ederim. – tmandry