如何在android应用程序中实现SharedReference

如何在android应用程序中实现SharedReference,android,sharedpreferences,Android,Sharedpreferences,我正在尝试在我的android应用程序中使用共享首选项在本地保存高分。我在这个链接上遵循指南,但我不确定一个小细节。指南说要使用这个公共类Calc扩展活动{ 公共静态最终字符串PREFS\u NAME=“MyPrefsFile” 我想知道我是否会创建一个新的活动来使用它,或者我是否会将它放在我的主要活动中。很抱歉这个愚蠢的问题,但我真的被卡住了,不知道如何继续解决这个问题。感谢阅读,非常感谢您的帮助。像这样做 public static void savePreference(Context

我正在尝试在我的android应用程序中使用共享首选项在本地保存高分。我在这个链接上遵循指南,但我不确定一个小细节。指南说要使用这个
公共类Calc扩展活动{
公共静态最终字符串PREFS\u NAME=“MyPrefsFile”

我想知道我是否会创建一个新的活动来使用它,或者我是否会将它放在我的主要活动中。很抱歉这个愚蠢的问题,但我真的被卡住了,不知道如何继续解决这个问题。感谢阅读,非常感谢您的帮助。

像这样做

 public static void savePreference(Context context,String name, String value)
    {
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
        SharedPreferences.Editor editor = prefs.edit();
        if (name != null && value != null)
        {
            editor.putString(name, value);
        }
        editor.commit();

    }

    public static String loadPreference(Context context,String name)
    {
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
        return prefs.getString(name, null);
    }

使用共享首选项(即写入内部应用程序目录的xml文件)时,它需要为该文件命名(使用默认共享首选项时除外)。您可以随意命名该文件,并在任意位置声明该名称:如果它将被多个类(活动、服务等)访问您可以创建自己的类,在上下文中传递该类以执行所需的任何操作。例如:

public class SharedPreferencesManager {

  public static final String PREFERENCES_NAME = "awesomePrefs";

  private static final String PREFERENCES_KEY_HIGHSCORE_LIST = "hscore";

  public static void saveHighScoreList(Context c, ArrayList<HighScore> scores) {
    SharedPreferences sp = c.getSharedPreferences(PREFERENCES_NAME, Context.MODE_PRIVATE);
    SharedPreferences.Editor edit = sp.edit();
    edit.putString(PREFERENCES_KEY_HIGHSCORE_LIST, serializeHighScores(scores));
    // save it
    edit.apply();
  }

  private static String serializeHighScores(ArrayList<HighScore> scores) {
    return // some form of concatenation
  }

}
公共类SharedReferencesManager{
公共静态最终字符串首选项\u NAME=“awesomePrefs”;
私有静态最终字符串首选项\u KEY\u HIGHSCORE\u LIST=“hscore”;
公共静态void saveHighScoreList(上下文c、数组列表分数){
SharedReferences sp=c.getSharedReferences(首选项\名称、上下文、模式\私有);
SharedReferences.Editor edit=sp.edit();
edit.putString(首选项\键\高分\列表,序列化高分(分数));
//省省吧
edit.apply();
}
私有静态字符串序列化高分(ArrayList分数){
return//某种形式的连接
}
}