0

如何更新我的 PreferenceActivity?

我在 SharedPreferences 中保存了我的 CheckBox 在活动中的值(在这种情况下,为真)。即使我参加其他活动,我也可以看到这是真的。但是,当我转到我的 PreferenceActivity 时,未选中该复选框,它是错误的。所以我想知道的是,如何在我的 PreferenceActivity 中加载 SharedPreferences,以及如何更新 CheckBox(加载值,如果为真,将 CheckBox 设置为选中状态)。

我应该像这样加载它吗?

Shared Preferences SP = getSharedPreferences(DATA, MODE_PRIVATE);
fw = SP.getBoolean("fw", false);

但是,由于无法使用 findViewById,如何将 CheckBox 设置为 true 或 false?

编辑:

我保存 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

4 回答 4

1

您需要创建一个Editor来修改SharedPreferences.

例子

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

更新

您还需要SharedPreferences在 Activity 中定义 used 。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getPreferenceManager().setSharedPreferencesName(DATA);
    addPreferencesFromResource(R.xml.prefs);
}
于 2012-09-30T23:55:35.147 回答
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

    }
于 2012-10-01T01:50:54.660 回答
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();

会做

于 2013-07-14T22:43:04.257 回答
0

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

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

于 2012-10-08T18:25:24.647 回答