Android共享偏好设置的默认值

8
我将尝试解释Android中的SharedPreferences。我是一位初学者,对此并不了解太多。
下面是我为我的应用程序实现的Preferences类。
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,但我不理解这个过程。
有人能帮助我吗?
谢谢您的时间。
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来保存任何基本数据类型:布尔值、浮点数、整数、长整数和字符串。这些数据将跨用户会话持久存在,即使应用程序被杀死也不受影响。

谢谢您的评论,我认为这正是我需要的,但是否可以从文件中加载此默认值?或者在代码中其他地方? - Loric
当然可以。您可以将默认值编码为 XML 或文本文件,并在您的 Activity 中进行读取。您也可以将默认值定义为另一个类中的变量并使用它们,可能通过将它们作为参数传递来实现。 - crocboy

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);

0

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

例如,要获取名为“用户名”的String,可以使用以下代码:

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

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

是的,这可能是一个解决方案,但是否有可能不在代码中定义这些首选项,而是在文件中定义? - Loric

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接