8

我正在尝试了解 Android 的 SharedPreferences。我是初学者,对它了解不多。

我有我为我的应用程序首选项实现的这个类

public class Preferences {
    public static final String MY_PREF = "MyPreferences";

    private SharedPreferences sharedPreferences;
    private Editor editor;

    public Preferences(Context context) {
        this.sharedPreferences = context.getSharedPreferences(MY_PREF, 0);
        this.editor = this.sharedPreferences.edit();
    }

    public void set(String key, String value) {
        this.editor.putString(key, value);
        this.editor.commit();
    }

    public String get(String key) {
        return this.sharedPreferences.getString(key, null);
    }

    public void clear(String key) {
        this.editor.remove(key);
        this.editor.commit();
    }

    public void clear() {
        this.editor.clear();
        this.editor.commit();
    }
}

问题是我想设置默认首选项。它们将在安装应用程序时设置,并且可以在应用程序之后进行修改并保持不变。我听说有一个preferences.xml,但我不明白这个过程。

有人可以帮助我吗?

谢谢你的时间

4

3 回答 3

14

很简单,如果你想为每个变量设置一个单独的默认值,你需要为每个变量都这样做,但是在你的方法上:

 public String get(String key) {
    return this.sharedPreferences.getString(key,"this is your default value");
}

如果变量从未被用户访问或从未创建,系统会将默认值设置为 value,如果您或用户更改了此值,则默认值将被忽略。请参阅 http://developer.android.com/guide/topics/data/data-storage.html#pref

直接来自 Android 文档:

SharedPreferences 类提供了一个通用框架,允许您保存和检索原始数据类型的持久键值对。您可以使用 SharedPreferences 保存任何原始数据:布尔值、浮点数、整数、长整数和字符串。此数据将在用户会话中持续存在(即使您的应用程序被终止)。

于 2013-07-19T23:34:53.857 回答
0

你可以使用的默认值参数getX()方法的默认值参数吗?

例如,要获取一个String名为“用户名”,您可以使用以下命令:

String username = prefs.getString("username_key", "DefaultUsername");

Preferences你可以简单地在你的类中定义你的默认值。

于 2013-07-19T19:18:23.330 回答
0

您可以将默认值存储在字符串资源中:

<string name="key_name">default_value</string>

然后得到它如下:

int ResId = context.getResources().getIdentifier(key_name, "string", context.getPackageName()));
prefs.getString(key_name,context.getResources().getString(ResId);
于 2015-05-08T22:50:08.830 回答