我正在嘗試使用 SharedPreferences 來存儲一些值并在應用程序打開時檢索它們,但是我在檢索一些 int 值時遇到了問題。我嘗試將值轉換為字符串,然后使用 Integer.ParseInt 檢索值,但仍然出現錯誤。這是我的價值應該存儲的地方:void putP1Index(int index) { SharedPreferences.Editor mEditor = mPrefs.edit(); mEditor.putInt(keyP1Index, index); mEditor.apply();}void putP2Index(int index) { SharedPreferences.Editor mEditor = mPrefs.edit(); mEditor.putInt(keyP2Index, index); mEditor.apply();}它們是從不同的類中保存的:private MainGame mainGame;private SavedValues savedValues;ScoreSetter(MainGame mainGame) { this.mainGame = mainGame; savedValues = new SavedValues(mainGame);}void setScore(who) {switch (who) { case 1: ++indexP1; savedValues.putP1Index(indexP1);//Some code... case 2: ++indexP2; savedValues.putP2Index(indexP2);//Some code...}}我嘗試像這樣檢索它:int getP1Index() { return mPrefs.getInt(keyP1Index, 0);}int getP2Index() { return mPrefs.getInt(keyP2Index, 0);}通過從不同的類調用它們:void getSavedValues() { indexP1 = savedValues.getP1Index(); indexP2 = savedValues.getP2Index();}在 getSavedValues 方法上,我收到錯誤java.lang.RuntimeException:無法啟動活動 ComponentInfo{...}:java.lang.ClassCastException:java.lang.String 無法轉換為 java.lang.Integer我不明白的是我將值保存為 int 并嘗試以相同的方式檢索它們。此外,我有一個類似的方法,但使用布爾值,它工作得很好。
1 回答
莫回無
TA貢獻1865條經驗 獲得超7個贊
我設法解決了這個問題。代碼沒有任何問題,但值是在應用程序的早期版本中編寫的。
在清理應用程序數據并在 Android Studio 中使緩存失效并清除緩存后,問題就消失了。
添加回答
舉報
0/150
提交
取消
