2013-07-19 108 views
2

我想了解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,但我不明白这个过程。

有人可以帮助我吗?

感谢您的时间

回答

5

简单,如果你想为每个变量单独的默认值,你需要做的是为每一个,但你的方法:

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

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

直接从Android文档:

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

+0

感谢您的评论,我认为这是我需要的,但可以从文件加载此默认值吗?或者在代码中的其他地方? –

+0

当然。您可以将默认值编码为XML或文本文件,然后在您的活动中读取它。您也可以将您的默认值定义为另一个类中的变量并使用这些变量,可能将它们作为参数传递。 – crocboy

+0

好的,我会试试看。谢谢 –

0

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

例如,为了获得所谓的“用户名” String,你可以这样做:

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

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

+0

是的它可能是一个解决方案,但它可以不定义这些代码中的偏好,但在文件中? –

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