2017-05-09 6 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

확인란을 선택하면 공유 환경 설정 만 업데이트되므로 사실 만 저장됩니다. 그냥 제거하면 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));