从自定义偏好中保存价值

Save value from custom Preference

我创建了一个直接从 CheckboxPreference 扩展而来的新首选项。在此 class 中,我添加了一个简单的新 boolean 值。我现在的问题是我必须如何存储这个新值。如果用户单击普通 CheckboxPreference,该值将自动存储在首选项中。我希望我的新价值也会发生这种情况。为此,我想我必须覆盖一个方法,但我不知道是哪个方法。此外,我现在有两个 boolean 值(选中的和我自己的),所以我必须用整数构建一个逻辑或类似的东西,因为两个布尔值有四种不同的可能性。那么我怎样才能有效地存储我的两个值,我必须为此覆盖哪种方法?

你应该使用 SharedPreference ,你存储值和密钥对。例如键是 "colorPreference",值是 "green"。即使关闭应用程序也不会被删除。

//设置共享首选项

public static SharedPreferences sharedPreferencesFDefault;
sharedPreferencesFDefault = PreferenceManager.getDefaultSharedPreferences(this);

//添加你想要的东西

SharedPreferences.Editor editor = sharedPreferencesFDefault.edit();
editor.putInt("studentNameColor", 2); // studentNameColor=2 for example
editor.commit();

//获取你存储的值

int color = sharedPreferencesFDefault.getInt("studentNameColor", -1); // gets 2, if this key is not found, returns -1

//删除 key-value 对,如果不再需要

SharedPreferences.Editor editor = sharedPreferencesFDefault.edit();
editor.remove("studentNameColor");
editor.commit();

//删除 defaultSharedPreference

中的每个 key-value
sharedPreferencesFDefault.edit().clear().commit();

您也可以使用 apply() 而不是 commit(),后者在后台异步操作。