如何更新我的PreferenceActivity?
我在SharedPreferences中保存了一个活动中CheckBox的值(在这种情况下,为true)。即使我去其他活动,我也能看出这是真的。但是,当我转到我的PreferenceActivity时,不会选中复选框,这是假的。所以我想知道的是,如何在PreferenceActivity中加载SharedPreferences,以及如何更新CheckBox(加载值,如果是,则将CheckBox设置为已选中)。
我应该像这样加载吗?
Shared Preferences SP = getSharedPreferences(DATA, MODE_PRIVATE);
fw = SP.getBoolean("fw", false);
但是,如何将CheckBox设置为true或false,因为我无法使用findViewById?
编辑:
保存CheckBox值的活动:
Editor edit = SP.edit();
edit.putBoolean("fw", fwbt.isChecked());
edit.commit();
我的偏好xml文件:
<CheckBoxPreference
android:title="CheckBox FW"
android:key="fw"
android:summary="Estado do CheckBox" />
我的偏好活动:
public class Prefs extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.prefs);
//Don't know what to do here...
}
}
答案 0 :(得分:1)
您需要创建Editor
来修改SharedPreferences
。
示例强>
getSharedPreferences(DATA, MODE_PRIVATE).edit().putBoolean("fw", true).commit();
<强>更新强>
您还需要在活动中定义使用过的SharedPreferences
。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getPreferenceManager().setSharedPreferencesName(DATA);
addPreferencesFromResource(R.xml.prefs);
}
答案 1 :(得分:0)
之前我没有使用过PreferenceActivity,但我认为您只需要像其他任何活动一样实现它。
public class PreferenceWithHeaders extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
CheckBox cb = (CheckBox)this.findViewById(IDOFBUTTON);
... do whatever on checkbox
}
答案 2 :(得分:0)
我无法找到解决方案,所以我放弃了。我刚创建了自定义偏好设置,方便了。
无论如何,我会在以后继续寻找解决方案。
答案 3 :(得分:0)
你搞砸了 - PreferenceActivity从SharedPreferences
写入/读取。所以在你的活动中做
Shared Preferences SP = PreferenceManager.getDefaultSharedPreferences(this);
Editor edit = SP.edit();
edit.putBoolean("fw", fwbt.isChecked());
edit.commit();
并且您的PreferenceActivity中应该有更改。
另外:
SP.edit().putBoolean("fw", fwbt.isChecked()).commit();
会做