2012-07-26 3 views
1

메서드가 실행될 때 "isPhysicalTheftEnabled"를 false로 설정하려고 시도했지만 작동하지 않습니다. 누구든지 어떤 생각을 가지고 있습니까?SharedPreferences & boolean

 SharedPreferences sp = getSharedPreferences("isPhysicalTheftEnabled", MODE_WORLD_READABLE); 
     SharedPreferences.Editor ed = sp.edit(); 
     ed.putBoolean("isPhysicalTheftEnabled", false); 

답변

2

당신은 SharedPreferences 값을 변경 한 후 ed.apply()를 호출해야합니다.

오류를 확인하려면 ed.commit()을 사용할 수도 있습니다. commit() (apply()과 달리)은 데이터가 (영구적으로) 영구 저장소에 기록되지 않은 경우 false를 반환합니다.

4

ed.commit()을 추가하십시오.

즉 :

SharedPreferences sp = getSharedPreferences("isPhysicalTheftEnabled", MODE_WORLD_READABLE); 
SharedPreferences.Editor ed = sp.edit(); 
ed.putBoolean("isPhysicalTheftEnabled", false); 
ed.commit(); 

SharedPreferences.Editor들 변경 사항을 적용하기 위해 당신이 당신 된 SharedPreferences에 변경 아무것도를 저지해야합니다. ANKIT의 대답에 귀하의 코멘트에 대해서는

:

SharedPreferences sp = getSharedPreferences("isPhysicalTheftEnabled", MODE_WORLD_READABLE); 
myCheckBox.setChecked(sp.getBoolean("isPhysicsTheftEnabled", [true/false]); 

:

당신이 SharedPreferences에 저장 부울의 값에 따라 CheckBox의 확인 속성을 설정하려면, 당신은 뭔가를해야합니다. def_value.getBoolean() 인 경우 true 또는 false 중 하나를 선택합니다 (SharedPreferences이 부울을 찾을 수없는 경우).

0

데이터를 SP에 넣은 후에 editorObject.commit();으로 전화해야합니다. 문제 아래의 코드를 사용하여 코드를 대체 들어

...

 SharedPreferences sp = getSharedPreferences("isPhysicalTheftEnabled", MODE_WORLD_READABLE); 
     SharedPreferences.Editor ed = sp.edit(); 
     ed.putBoolean("isPhysicalTheftEnabled", false); 
     ed.commit(); 
+0

나는 .commit했다(); 이미 체크 박스가 체크되지 않은 채로 있지 않았다면, 그 이유는 무엇입니까? – dythe

+0

코드 조각을 게시 해주세요. 'SharedPreferences'에서 부울을 올바르게 가져 왔고 CheckBox의'.setChecked()'를 그 부울의 값으로 설정하고 있습니까? – Mxyk

+0

'PreferenceActivity'를 사용하지 않으면 checkBoxObject.setChecked (sharedPreferences.getBoolean ("isPhysicalTheftEnabled", false))를 통해'CheckBox' 상태를 수동으로 설정해야합니다.' – nkr