我试图让现有的首选项子类工作,保存颜色值。我没有写这个类,但它应该在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