2012-07-26 36 views
1

我試圖設置「isPhysicalTheftEnabled」爲false時執行一個方法,但這似乎並沒有工作。任何人有任何想法?SharedPreferences&布爾

 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的回答您的評論:

要設置CheckBox根據您保存到SharedPreferences布爾值的checked屬性,你需要的東西,如:

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

。 。其中您選擇truefalsedef_value.getBoolean()(如果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 2012-07-26 14:16:35

+0

發佈我們的代碼塊。你是否正確地從'SharedPreferences'獲取了布爾值,並將CheckBox的'.setChecked()'設置爲該布爾值的值? – Mxyk 2012-07-26 14:17:31

+0

當你不使用'PreferenceActivity'時,你必須通過'checkBoxObject.setChecked(sharedPreferences.getBoolean(「isPhysicalTheftEnabled」,false))手動設置'CheckBox'狀態'' – nkr 2012-07-26 14:18:56