2011-07-07 39 views
15

SharedPreferencesを使用してDateオブジェクトを保存することはできますか?DateオブジェクトをSharedPreferencesに格納する方法は?

実際に私のコードでは、Stringという変数、booleanおよびDateという変数があります。ここにはDate以外のすべてのオブジェクトを保存する機能があります。だから私はどうすればいいの?

private void SavePreferences() { 

    String key="1"; 
    String value="hello"; 

    int x=5; 

    Date currentDate=new Date(); 

    SharedPreferences sharedPreferences = getPreferences(MODE_APPEND); 
    SharedPreferences.Editor editor = sharedPreferences.edit(); 
    editor.putString(key, value); 

    editor.putInt("2",5); 

    editor.commit(); 
} 

だから私の質問はSharedPreferencesを使用してDateを格納する方法ですか?

答えて

26
editor.putLong("THE_DATE", currentDate.getTime()); 

この方法のようにsharedpreferencesを使用して、日付値を格納することができますし、このような好みからDateを読むことができます:

long millis = sharedPreferences.getLong("THE_DATE", 0L); 
Date theDate = new Date(millis); 
+0

を置くことができます。..私はリセットボタンを持っています。リセットボタンをクリックすると、これらの保存されたすべてのデータを削除できます。これは、shredPreferencesを使用して保存しました。 – AndroidDev

+4

'editor.clear()。commit();' –

+0

簡単で素晴らしい答えです。 –

1

あなたは

editor.putLong("date",currentDate.getTime()); 
1

は、例えば、フォーマットされたStringとしてDateを入れて

//for putting 
Date myDate; 
final String FORMAT="yyyy-MM-dd"; 
String prefData=SimpleDateFormat(FORMAT).format(myDate); 
editor.putString("Date", prefDate); 

//for reading 
prefDate=settings.getString("Date", ""); 
Date date=new SimpleDateFormat(FORMAT).parse(prefDate); 

またはあなたがいる限りミリ

+0

大丈夫ですが、私が2番目の日付を保存しようとすると、最初の日付が上書きされてしまいます。それはどのようにして維持できますか?日付を追加するたびに、前回の日付を上書きせずに新しい日付を保存します。 – AndroidDev

+0

2番目のデータを別のキー、たとえばputString( "date1"、myDate1)とputString( "date2"、myDate2)で保存します。 – barmaley

3

設定日付時間私は再びアプリケーションを開くdata..andを保存したら

SharedPreferences sharedPreferences = getPreferences(MODE_APPEND); 
SharedPreferences.Editor editor = sharedPreferences.edit(); 
Date dt = getSomeDate(); 
editor.putLong(dateTimeKey, dt.getTime()); 

取得日時

long myDate = sharedPreferences.getLong(dateTimeKey, new Date().getTime()); 
+0

'long'という名前の変数は使用できません。これはキーワードです。 –

+0

おっと、申し訳ありませんが、私はmyDateに変更しました。ありがとうございます。 – Xorsat

+0

+1をデフォルト値に設定します。 – rob5408

関連する問題