Android 更新PreferenceActivity上的复选框

Android 更新PreferenceActivity上的复选框,android,Android,如何更新我的首选项活动 我已经在SharedReferences中保存了活动中复选框的值(在这种情况下为true)。即使我参加其他活动,我也能看出这是真的。但是,当我转到我的首选项活动时,复选框没有被选中,它是假的。因此,我想知道的是,如何在我的首选项活动中加载我的SharedReferences,以及如何更新复选框(加载值,如果为真,则将复选框设置为选中) 我应该这样装吗 Shared Preferences SP = getSharedPreferences(DATA, MODE_PRIVA

如何更新我的首选项活动

我已经在SharedReferences中保存了活动中复选框的值(在这种情况下为true)。即使我参加其他活动,我也能看出这是真的。但是,当我转到我的首选项活动时,复选框没有被选中,它是假的。因此,我想知道的是,如何在我的首选项活动中加载我的SharedReferences,以及如何更新复选框(加载值,如果为真,则将复选框设置为选中)

我应该这样装吗

Shared Preferences SP = getSharedPreferences(DATA, MODE_PRIVATE);
fw = SP.getBoolean("fw", false);
但是,既然我不能使用findViewById,如何设置复选框true或false

编辑:

保存复选框值的活动:

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" />

您需要创建一个
编辑器
来修改
共享引用

示例

getSharedPreferences(DATA, MODE_PRIVATE).edit().putBoolean("fw", true).commit();
更新

getSharedPreferences(DATA, MODE_PRIVATE).edit().putBoolean("fw", true).commit();
您还需要在活动中定义已使用的
SharedReferences

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getPreferenceManager().setSharedPreferencesName(DATA);
    addPreferencesFromResource(R.xml.prefs);
}

我以前没有使用过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

    }

我找不到解决办法,所以我放弃了。我刚刚创建了一个自定义首选项,这更简单


无论如何,我以后会继续寻找解决方案。

你把事情搞砸了-首选项活动从
共享引用中写入/读取。所以在你的活动中

Shared Preferences SP = PreferenceManager.getDefaultSharedPreferences(this);
Editor edit = SP.edit();
edit.putBoolean("fw", fwbt.isChecked());
edit.commit();
你的偏好活动中应该有变化

此外:

SP.edit().putBoolean("fw", fwbt.isChecked()).commit();

没用。我想我可能表达得不好。我已经在SharedReferences中保存了活动中复选框的值(在这种情况下为true)。即使我参加其他活动,我也能看出这是真的。但是,当我转到我的首选项活动时,复选框没有被选中,它是假的。因此,我想知道的是,如何在我的首选项活动中加载我的SharedReferences,以及如何更新复选框(加载值,如果为真,则将复选框设置为选中)。是否加载包含
首选项屏幕
addPreferencesFromResource(R.XML.pref_classic_外观)的XML文件
然后,
复选框首选项的状态与存储到
数据的状态不匹配
?您是否在该配置文件中为
CheckBoxPreference
定义了键“fw”?我已经用部分代码编辑了我的文章。这是同一个键,我调用了
addPreferencesFromResource(R.xml.mypreferencexmlfile)问题是我不能给CheckBoxPreference一个id。