我使用sharedpreferences保存了一些變量,但是我的save方法使用空指針異常崩潰了應用程序。使用SharedPreferences保存時出錯
public void save() {
SharedPreferences sp = context.getSharedPreferences(saveFile, Context.MODE_PRIVATE);
//Use the editor for easier management, no calling edit and commit so many times.
SharedPreferences.Editor editor = sp.edit();
editor.putInt("X", player.getX());
editor.putInt("Y", player.getY());
editor.putInt("level", player.getLevel());
editor.putFloat("xp", player.getXp());
editor.commit();
}
getSharedPreferences()本身不工作,需要有上下文。在它之前,這可能是一個問題。我定義了上下文,導入了SharedPreferences,爲什麼這不起作用?
編輯:這裏是logcat的
02-18 20:21:49.958: E/AndroidRuntime(1005): FATAL EXCEPTION: Thread-89
02-18 20:21:49.958: E/AndroidRuntime(1005): java.lang.NullPointerException
02-18 20:21:49.958: E/AndroidRuntime(1005): at com.package.game.GameScreen.save(GameScreen.java:856)
02-18 20:21:49.958: E/AndroidRuntime(1005): at com.package.game.GameScreen.updateLevelUp(GameScreen.java:364)
save方法是上方和線:
SharedPreferences sp = context.getSharedPreferences(saveFile, Context.MODE_PRIVATE);
是線856 updateLevelUp是被調用的播放器的水平時的方法當屏幕退出時,遊戲繼續並調用save()。
發佈堆棧跟蹤。哪一行是空的? – 2013-02-18 17:20:57
考慮保存對'safeFile.edit()'的引用並調用'commit()'一次。 – Sam 2013-02-18 17:21:46
「loadSave」在邏輯上似乎爲空 – EvZ 2013-02-18 17:21:50