2017-07-31 64 views
0

我使用下面的方法來保存和讀取用戶設置:設置sharedpreferences默認值

private void saveUserSettings(){ 
    SharedPreferences userSettings = getSharedPreferences("userSettings", Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = userSettings.edit(); 
    editor.putInt("timeOne",timeOne); 
    editor.apply(); 
} 

private int getUserSettings(){ 
     SharedPreferences userSettings = getSharedPreferences("userSettings", Context.MODE_PRIVATE); 
     timeOne = userSettings.getInt("timeOne",timeOne);  
    } 

然後在的onCreate如下:

SharedPreferences prefs = getSharedPreferences("userSettings", Context.MODE_PRIVATE); 

這是罰款和數據保存時應用程序重新啓動。不過,我希望在最初安裝應用程序時擁有默認數據,它似乎應該將值存儲在xml文件中。

我創建在以下文件RES/XML /的preferences.xml

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
    <EditTextPreference 
     android:key="timeOne" 
     android:defaultValue="2"/> 
</PreferenceScreen> 

然後在的onCreate:

PreferenceManager.setDefaultValues(this, R.xml.preferences, false); 

我改變了 「userSettings」 喜好投其所好,但這多申不工作並返回零值。這種閱讀xml文件的方法是否正確或/我能忽略一些東西?

回答

1

我覺得你太過複雜了。

在此說明中,如果沒有與該名稱共享的首選項,則使用默認的第二個參數。

您只需將該值設置爲您需要的默認值即可。

timeOne = userSettings.getInt("timeOne",<Put here the default value>); 

編輯我

比方說默認值,如果它是第一次應用程序運行並沒有尚未保存的設置,爲2

讀取值的方法應該是這樣的。

private int getUserSettings(){ 
     SharedPreferences userSettings = getSharedPreferences("userSettings", Context.MODE_PRIVATE); 
     timeOne = userSettings.getInt("timeOne",2);  
} 
+0

這是一個公平點,但問題是從preference.xml文件讀取。當它應該是2時,它返回0。 – MXG123

+0

如果2是默認值,那麼爲什麼不把它設置爲這樣呢? timeOne = userSettings.getInt(「timeOne」,2); – Juan

+0

我已經在Edit I – Juan