2017-05-09 6 views
0

Ich versuche, den Status eines Switch in SharedPreferences zu speichern, aber ich habe Probleme dabei. Ich habe einen Schalter zum Ein- und Ausschalten von Audio.Probleme beim Speichern von Status mit 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(); 
      } 
      ... 
     } 
     ...  
    }); 
    ... 
} 

Am Ende der Aktivität, in der oncCreate Methode, die ich habe:

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

Beide Code-Schnipsel aus der gleichen Aktivität ist.

+0

Was ist das Problem? Welche Ausnahme/Fehler bekommen Sie? – PedroHidalgo

+0

Ich bekomme keine Ausnahme/Fehler. Der Status wird nicht gespeichert – John

Antwort

1

Sie aktualisieren nur Ihre freigegebenen Einstellungen, wenn das Kontrollkästchen aktiviert ist, sodass Sie nur true speichern. Entfernen Sie einfach die, wenn von 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

Dies funktioniert nicht. Wenn ich die Schalter- und Schalteraktivität aktiviere, wird der Schalter nicht gespeichert. – John

+0

können Sie einen Kontext darüber bereitstellen, wie prefs.getBoolean ("audio", true) verwendet wird? – pablobu

0

Haben Sie Ihre boolean auf onCreate versucht erholt(), dann nach, dass die Schalterstellung?

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