2017-05-09 24 views
0

SharedPreferences内のスイッチの状態を保存しようとしていますが、これを行うのに問題があります。私はオーディオをオン/オフするためのスイッチを持っています。アクティビティの終了時SharedPreferencesで状態を保存する際の問題

public void audio() { 
    audio.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) { 
      if (isChecked) { 
       player= MediaPlayer.create(legoActivity.this, R.raw.sound); 
       player.start(); 

       SharedPreferences sharedPreferences = getSharedPreferences("prefss", MODE_PRIVATE); 
       SharedPreferences.Editor editor = sharedPreferences.edit(); 
       editor.putBoolean("audio", isChecked); 
       editor.apply(); 
       editor.commit(); 
      } 
      ... 
     } 
     ...  
    }); 
    ... 
} 

、私はoncCreate方法において:

SharedPreferences prefs = getSharedPreferences("prefss", MODE_PRIVATE); 
prefs.getBoolean("audio", true); 

両方のコードスニペットは、同じ活動からのものです。

+0

何が問題ですか?どんな例外/エラーが出ていますか? – PedroHidalgo

+0

例外/エラーは発生しません。状態は保存されません – John

答えて

1

チェックボックスをオンにしている場合にのみ共有設定を更新しているため、trueを保存するだけです。 だけ削除する場合OnCheckedChanged

@Override 
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) { 
    player = MediaPlayer.create(legoActivity.this, R.raw.sound); 
    player.start(); 

    SharedPreferences sharedPreferences = getSharedPreferences("prefss", MODE_PRIVATE); 
    SharedPreferences.Editor editor = sharedPreferences.edit(); 
    editor.putBoolean("audio", isChecked); 
    editor.apply(); 
    editor.commit(); 
} 
+0

これは機能しません。スイッチとスイッチの動作を有効にすると、スイッチは保存されません。 – John

+0

prefs.getBoolean( "audio"、true)の使い方に関するいくつかのコンテキストを提供できますか? – pablobu

0

あなたは、その後にスイッチを設定し、あなたのonCreate()であなたのブール値を回復しようとしたんでしたから?

SharedPreferences prefs = getSharedPreferences("prefss", MODE_PRIVATE); 
audio.setChecked(prefs.getBoolean("audio", true)); 
関連する問題