我正在尝试使用SharedPreferences,但我一直遇到以下问题。
在我创建文件的类中&添加信息我执行以下操作:
private SharedPreferences prefs = null;
private SharedPreferences.Editor editor = null;
public void setStuff (String info, boolean save, Context appCT) {
if (prefs == null && editor == null) {
prefs = appCT.getSharedPreferences("preferences", Context.MODE_PRIVATE);
editor = prefs.edit();
}
editor.putString("Custom", info);
editor.commit();
}
据我所知,这是完美的。但是,当我尝试访问我存储在'偏好设置中的信息时。来自另一个班级:
private static SharedPreferences prefs = null;
private static String custom = null;
public static void getStuff(Context appCT) {
if (prefs == null) {
prefs = appCT.getSharedPreferences("preferences", Context.MODE_PRIVATE);
custom = prefs.getString("Custom", null);
}
}
custom的值始终为null,就好像我从未存储过String一样。谁能告诉我为什么会这样?
我已经找到了答案;我正在使用getSharedPreferences的上下文,我已经遵循了所有的指示&我找到的教程没有不同的结果。
注意:这些类不在同一个应用程序中。这是一个问题吗?我可以不访问其他应用程序的首选项吗?
谢谢。
答案 0 :(得分:0)
getStuff()
为custom
, prefs
仅设置null
。因此,该方法在第一次调用后将不执行任何操作。或者,如果{<1}}在之前设置了,则会调用此方法,那么该方法将永远不会执行任何操作。
该方法应如下所示:
prefs
此外,如果2个类在不同的应用程序中,public static void getStuff(Context appCT) {
if (prefs == null) {
prefs = appCT.getSharedPreferences("preferences", Context.MODE_PRIVATE);
}
custom = prefs.getString("Custom", null);
}
将阻止它们共享SharedPreferences。您可以改为使用Context.MODE_WORLD_READABLE或Context.MODE_WORLD_WRITEABLE,但这在API级别17中非常不安全且已弃用。请参阅上述链接中的信息以查看建议的内容。
答案 1 :(得分:0)
我认为你需要做一个prefs = PreferenceManager.getDefaultSharedPreferences(yourcontext);第一