2013-07-19 84 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);