2017-06-09 8 views
0

アクティビティの保存に問題があります。共有設定を使用して情報を保存しています。私はボタンをクリックすると、それが共有preferncesにそれを保存し、活動を終了しています:共有設定でアクティビティを保存する

sharedPreferences = this.getSharedPreferences("my_Pref", Context.MODE_PRIVATE); 
    sharedPreferences.edit().putInt(AGE_SCORE, sbAge.getProgress()).apply(); 
    sharedPreferences.edit().putInt(STATUS_SCORE, spMyStatus.getSelectedItemPosition()).apply(); 
    if (rbFemaleMe.isChecked()) 
     sharedPreferences.edit().putInt(SEX_SCORE, 1).apply(); 
    else if(rbMaleMe.isChecked()) 
     sharedPreferences.edit().putInt(SEX_SCORE, 2).apply(); 
    sharedPreferences.edit().commit(); 
finish(); 

活動を閉じた後、私はそれを開く秒の時間が、何も起こりません、

私のonCreate()メソッド:

protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_search); 
      if(sharedPreferences!= null) 
      { 
      sharedPreferences = getSharedPreferences("my_Pref", MODE_PRIVATE); 

      sbAge.setProgress(sharedPreferences.getInt(AGE_SCORE, 0)); 
      spMyStatus.setSelection(sharedPreferences.getInt(STATUS_SCORE, 0)); 
      if(sharedPreferences.getInt(SEX_SCORE, 0) == 1) 
       rbMaleMe.isChecked(); 
      else if (sharedPreferences.getInt(SEX_SCORE, 0) == 2) 
       rbFemaleMe.isChecked(); 
     } 
+0

を試してみてください)' '各ステップで')(適用の必要はありません。 –

+2

put sharedPreferences = getSharedPreferences( "my_Pref"、MODE_PRIVATE);下のsetContentView – Pavan

答えて

1

apply()commit()の両方を使用すると、すべての編集を行い、ディスク書き込みに同期するcommit()を使用してみてください。

Difference in commit() and apply()

sharedPreferences = this.getSharedPreferences("my_Pref", Context.MODE_PRIVATE); 
     SharedPreferences.Editor edit = sharedPreferences.edit(); 
    edit.putInt(AGE_SCORE, sbAge.getProgress()); 
     edit.putInt(STATUS_SCORE, spMyStatus.getSelectedItemPosition()); 
     if (rbFemaleMe.isChecked()) 
      edit.putInt(SEX_SCORE, 1); 
     else if(rbMaleMe.isChecked()) 
      edit.putInt(SEX_SCORE, 2); 
     edit.commit(); 
    finish(); 

問題はsharedpreferences != nullのためではなく、それは常にnullだろう起動時に確認してくださいここにあります。最初にgetApplicationContext().getSharedPreferences("my_Pref", MODE_PRIVATE);で初期化してください。

protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_search); 

      sharedPreferences = getApplicationContext.getSharedPreferences("my_Pref", MODE_PRIVATE); 

      if(sharedPreferences != null) 
      { 

      sbAge.setProgress(sharedPreferences.getInt(AGE_SCORE, 0)); 
      spMyStatus.setSelection(sharedPreferences.getInt(STATUS_SCORE, 0)); 
      if(sharedPreferences.getInt(SEX_SCORE, 0) == 1) 
       rbMaleMe.isChecked(); 
      else if (sharedPreferences.getInt(SEX_SCORE, 0) == 2) 
       rbFemaleMe.isChecked(); 
     } 
1

onCreateには、条件がありますif(sharedPreferences!= null)アクティビティが開始されるときsharedPreferencesはnullになります。そのオブジェクトを再度取得する必要があります。

0

if(sharedPreferences!= null){}にこの部分を削除するか、またはあなたが最後に `(コミットない場合

sharedPreferences = getSharedPreferences("my_Pref", MODE_PRIVATE); 
if(sharedPreferences!= null) 
      { 
      .... 
      } 
関連する問題