我試圖讓現有的首選項子類工作,保存顏色值。我沒有寫這個類,但它應該在android-7及更高版本上工作(我正在編譯爲android-9目標)。完整的源代碼是available here。這裏就是偏好保存:未保存Android自定義首選項值
@Override
public void onColorChanged(int color) {
if (isPersistent()) {
boolean ret = persistInt(color);
}
// (update preview box, other stuff)
}
使用調試輸出,我可以告訴大家,isPersistent()
回報true
,但persistInt()
回報false
。根據Android documentation,persistInt()
返回首選項是否持續;這些如何返回不同的值? (注意:setPersistent(true)
是從構造函數明確調用的。)
在任何情況下,值都不會保存。對getPersistedInt(defaultValue)
的調用返回默認值,甚至稍後在類的相同實例中返回。在下面的代碼中,getPersistedInt()
始終被調用並始終返回mDefaultValue
。
public int getValue() {
try {
if (isPersistent()) {
mValue = getPersistedInt(mDefaultValue);
}
} catch (ClassCastException e) {
mValue = mDefaultValue;
}
return mValue;
}
這是爲什麼,我該如何確保首選項被保留?
FWIW,這裏是我的了'ColorMixer'部件項目,還打包爲'ColorPreference':https://github.com/commonsguy/cwac-colormixer的鏈接 – CommonsWare 2011-06-14 22:52:59
謝謝,我已經看過你的,但決定反對它,因爲雖然RGB滑塊可用於非觸摸屏手機,但我的應用程序無論如何都需要觸摸屏,而且我更喜歡某種HSL選擇器。 – tmandry 2011-06-15 03:47:07