我正在开发Android应用,但我遇到了问题。当我尝试从我的Activity中获取已保存的首选项并在BroadcastReceiver
中使用它时,它告诉我我正在寻找的字符串不存在。
这是我在Activity中保存首选项的方法:
private void SavePreferences(String key, String value) {
SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(key, value);
editor.commit();
}
这就是我尝试在BroadcastReceiver
中获取偏好的方式:
String pref = PreferenceManager.getDefaultSharedPreferences(context)
.getString("MEM1", "Does not exist");
MEM1
是我之前保存过的字符串。
我的问题是,当我阅读pref
时,我的默认值为Does not exist
,而不是我的偏好值(MEM1
)。有人能指出我出错的地方吗?
答案 0 :(得分:1)
Activity.getPreferences(mode);
返回特定于该Activity的SharedPreferences实例(例如,支持它的XML文件将被命名为与活动相同),而默认共享首选项特定于该应用程序(XML名称将基于你的包裹名称)。
每次检索SharedPreferences时都提供自定义文件名,或者坚持使用默认文件名。
答案 1 :(得分:0)
你应该使用..
private void SavePreferences(String key, String value){
SharedPreferences sharedPreferences = getPreferences("my_prefs", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(key, value);
editor.commit();
}
然后
String pref = getSharedPreferences("my_prefs", MODE_PRIVATE).getString("MEM1", "Does not exist");
还要确保你的钥匙是正确的。