2016-07-12 11 views
0
SharedPreferences mPrefs = getSharedPreferences("IDvalue",0); 

    if(mPrefs.contains("DATE")) { 
    //do something 
    }else { 
     mPrefs.edit().putString("DATE", currentdate); 
     mPrefs.edit().commit(); 
     Toast.makeText(this, "changed", Toast.LENGTH_SHORT).show(); 
    } 

コードを実行して初めてトーストを表示するが、2回目にそれを表示しないで実行し、最初のパラメータ内でコードを実行する。しかし、今のようにコードは2回目の "else"文を2回実行し、最初の文も実行しません。まるで文字列が "日付"に入れられていないかのようです。私のコードに何か問題はありますか?共有設定に含まれていない場合

+3

メイトは、最初の行mPrefs.edit()putString( "DATE"、CURRENTDATE).commit()の最後にコミットを追加し、再編集しないでください。 – user6547359

+0

ありがとう、それは働いていましたが、どうしたらよいかわかりません。それは同じではありませんか? –

+0

相手が編集のために開いていて、コミット(保存)せずに編集を再開すると、最初の変更は保存されませんでした。 – user6547359

答えて

0

Editorオブジェクトを作成し、編集/コミットに使用します。

以下のコードを使用できます。それは正常に動作します。 。

SharedPreferences mPrefs = getSharedPreferences("IDvalue",0); 
SharedPreferences.Editor mEditor = mPrefs.edit(); 

if(mPrefs.contains("DATE")) { 
      //do something 
}else { 
    mEditor.putString("DATE", currentdate); 
    mEditor.commit(); 
    Toast.makeText(this, "changed", Toast.LENGTH_SHORT).show(); 
} 
+0

は含まれています。改善するために、私はちょうどデバッグのトーストを表示したい場合は、mStringDateを取得するときにdefaultValueの戻り値としてcurrentDateを設定したいと思っています – user6547359

+0

@ user6547359はい、私は知っていました... –

関連する問題