检索SharedPreferences数据失败

时间:2014-04-16 19:31:28

标签: android sharedpreferences

我正在尝试使用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的上下文,我已经遵循了所有的指示&我找到的教程没有不同的结果。

注意:这些类不在同一个应用程序中。这是一个问题吗?我可以不访问其他应用程序的首选项吗?

谢谢。

2 个答案:

答案 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_READABLEContext.MODE_WORLD_WRITEABLE,但这在API级别17中非常不安全且已弃用。请参阅上述链接中的信息以查看建议的内容。

答案 1 :(得分:0)

我认为你需要做一个prefs = PreferenceManager.getDefaultSharedPreferences(yourcontext);第一