SharedPreferences总是返回默认值而不是实际值

时间:2013-02-20 18:24:12

标签: java get hashmap themes settings

我看到了这个主题的一些帖子,并试着找不到工作的解决方案。

我在主要活动中写道:

SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);;
setTheme(sharedPreferences.getInt("selectedTheme", 0));

它总是返回0。

我检查了模拟器中的Setting.xml文件:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<int name="STheme" value="2131099649" />
<int name="selectedTheme" value="2131099649" />
<string name="SThemeS">R.style.AppTheme</string>
</map>

因为你可以看到关键值“selectedTheme”就在那里。

任何想法?

另一个问题:我必须创建

SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);;

对于使用sharedPreferences的每个活动?

1 个答案:

答案 0 :(得分:2)

当SharedPreferences创建时,文件的名称就是创建他的活动。

因此,如果您在设置活动中创建SharedPreferences,并且想要从其他活动中获取首选项,则必须对SharedPreferences文件的名称进行spicify。

如果您尝试从同一活动获得偏好,则不需要这样做。

示例: SharedPreferences 在设置活动中创建并从不同活动中读取:

在当前活动中添加此行 -

SharedPreferences preferences = context.getSharedPreferences("Setting",
                MODE_PRIVATE)

现在您可以提取数据....