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

标签 java get hashmap themes settings

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

我在主要 Activity 中写道:

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的 Activity ?

最佳答案

当 SharedPreferences 创建时,文件的名称与创建他的 Activity 的名称相同。

因此,如果您在“设置” Activity 中创建 SharedPreferences,并且希望从其他 Activity 获取首选项,则必须指定 SharedPreferences 文件的名称。

如果您尝试从同一 Activity 中获取偏好设置,则无需这样做。

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

在当前 Activity 中添加此行 -

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

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

关于java - SharedPreferences get 总是返回默认值而不是实际值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14987198/

相关文章:

java - Android Studio 中与 Azure 的 JDBC 连接失败

php - 登录后让用户回到初始页面?

java - 按列表值对 Java Map 进行排序

java - 如何增加整数数组值?

java - JPA 在哪里存储其实际数据实体?

java - 在 Vaadin GUI 工具包中定期执行方法

algorithm - 就时空复杂度而言,哪种解决方案更好?

javascript - 从对象返回数据并通过 AngularJS 在 <ul> 中显示

mongodb - React - 如何在将数据发布到数据库(mongodb)后重新渲染组件

c - 在 C 中释放 HashMap 桶数组