0

我看到了这个主题的一些帖子,并尝试了没有用的解决方案。

我在主要活动中写道:

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 的活动?

4

1 回答 1

2

当 SharedPreferences 创建文件的名称是作为创建他的活动。

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

如果您试图从同一活动中获取偏好,则无需这样做。

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

在当前活动中添加这一行 -

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

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

于 2013-02-21T17:04:31.707 回答