从自定义偏好中保存价值
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()
,后者在后台异步操作。
我创建了一个直接从 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()
,后者在后台异步操作。