1

我显然做错了什么。在我的初始屏幕上,当它决定去哪个活动时,我有以下代码:

SharedPreferences getPrefs = PreferenceManager
                        .getDefaultSharedPreferences(getBaseContext());
                boolean disclamerChecked = getPrefs.getBoolean("disclamer", false);
                boolean medicalScreeningChecked = getPrefs.getBoolean("screening", false);

所以,我正在尝试读取 2 Boolean,它在应用程序安装时应该是错误的,并且在安装完成后它应该是永久正确的。

现在,在我的活动中(目前仅免责声明)我有以下内容:

private void setDisclamerPropertie() {
    // TODO Auto-generated method stub
    startupPrefs= getSharedPreferences("startupPrefs", MODE_WORLD_WRITEABLE);
    SharedPreferences.Editor editor = startupPrefs.edit();
    editor.putBoolean("disclamer", true);
    editor.commit();
    return;
}

此函数在 On Create 函数中调用,当单击“接受”按钮时,它应该保存共享首选项(或者至少这是我需要发生的)。

按钮有效,它进入下一个活动,然后又进入下一个活动,但是当我重新加载应用程序时,布尔值似乎没有保存,应用程序再次要求确认。

那么,我在哪里写错了,或者在阅读正确的偏好时缺少了什么?

4

2 回答 2

2

您正在使用不同的偏好。

startupPrefs= getSharedPreferences("startupPrefs", MODE_WORLD_WRITEABLE);

这也应该是:

startupPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
于 2012-08-30T15:26:21.217 回答
2

您正在读取默认的共享首选项,但写入一个命名的首选项(“startupPrefs”),因此有 2 个单独的共享首选项实例

于 2012-08-30T15:26:33.177 回答