2013-09-26 27 views
0

任何時候我嘗試從SharedPreference開始getInt()我的應用程序崩潰,但我可以通過偏好作爲地圖進行迭代。例如,請參見下面帶星行:儘管存在值,但無法獲得共享偏好值

private void loadPref(){ 
    myPrefs = PreferenceManager.getDefaultSharedPreferences(this); 
    int sf = DEFAULT_VALUE; 

    Map<String,?> keys = myPrefs.getAll(); 
    for(Map.Entry<String,?> entry : keys.entrySet()){ 
     if (entry.getKey().contentEquals("score_format")) 
      // this works:           //***** 
      sf = Integer.parseInt(entry.getValue().toString()); //***** 
    } 

    // but this does not:           //***** 
    // sf = myPrefs.getInt("score_format", DEFAULT_VALUE);   //***** 
    setScoreFormat(sf); 
} 

很顯然,我的首選項被保存(此採樣並在多項活動中工作的優先選擇屏幕證明)。我在嘗試訪問getDefaultSharedPreferences之前調用super.onCreate()。

我應該考慮瞭解爲什麼此代碼無法正常工作?爲什麼地圖可以工作,但不是「getInt」方法?我確實注意到,如果我試圖明確地轉換鍵值,應用程序也會崩潰......我必須先將它轉換爲String。

我錯過了什麼?

+0

你可以發佈異常的logcat嗎?和'DEFAULT_VALUE'的定義? – Szymon

回答

0

如果您不想分析,請確保您將其與putExtra意圖放在一起的分數是int類型,而不是字符串。

+0

謝謝 - 當然。 – TonyMLake

0

看起來像對象與score_format關聯是String但你試圖獲得它作爲int這是一個錯誤。

+0

是的,非常正確。不能相信我錯過了這一點。樹林無處不在,我看不到森林。謝謝! – TonyMLake