更新PreferenceActivity上的复选框

时间:2012-09-30 23:46:11

标签: android

如何更新我的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...
    }
}

4 个答案:

答案 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();

会做