2014-06-19 46 views
1

我想將SharedPreference從Boolean更改爲String。默認值爲true,將被「啓用」。這不是問題,因爲它會自動設置。但是,我怎樣才能檢查它是否設置爲false,然後將新的preferece設置爲「disabled」?在應用程序更新過程中是否有一種方法可以遷移此首選項? 如果我不遷移它,在更新過程中,此首選項的狀態會丟失...如何在更新期間遷移SharedPreferences?

回答

0

您可以在第一個打開的活動中添加一個簡單方法,以便爲您更新首選項值。此外,添加一個檢查,以便它只執行第一次。

+0

應用程序更新後沒有調用方法嗎?每次運行代碼似乎都不是那麼優雅.... – agrajag

+0

不,我不認爲有更新後專門調用的方法。但是,只有在密鑰存在的情況下(即第一次在更新後運行應用程序時),您纔可以運行代碼來更新sharedPrefs,然後在添加新的String Pref後刪除該密鑰。隨後的每一次,由於密鑰不存在,更新代碼將不會運行。 –

3
SharedPreferences preferences = // obtain it 
String pref; 
try { 
    pref = preferences.getString("yourPref", "enabled"); 
} catch (ClassCastException e) { 
    // this means the pref is stored as a boolean 
    boolean boolPref = preferences.getBoolean("yourPref", true); 
    // store it instead as a String 
    pref = boolPref ? "enabled" : "disabled"; 
    preferences.edit().remove("yourPref").putString("yourPref", pref).commit(); 
}