2017-07-31 17 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" に変更したが、このdosenゼロの値を返します。 xmlファイルを読み込むこの方法はOKか/ /私は何かを見落としていますか?

答えて

1

あなたは自分自身を過度に作成していると思います。

この命令では、2番目のパラメータは、その名前と共有されていない場合に使用するデフォルトです。

必要な値にその値を設定するだけで済みます。 I

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

EDITは、アプリの実行は初めてで、まだ保存設定がない場合は、値を読み込む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

私は編集Iの例を追加しました – Juan

関連する問題