Я сохраняю несколько переменных, используя общие настройки, но мой метод сохранения приводит к сбою приложения с исключением нулевого указателя.
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, так почему это не работает?
EDIT: вот логарифм
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)
Метод сохранения выше и строка:
SharedPreferences sp = context.getSharedPreferences(saveFile, Context.MODE_PRIVATE);
это строка 856. updateLevelUp — это метод, который вызывается, когда уровень игрока повышается, и когда этот экран закрывается, игра возобновляется и вызывается save().
safeFile.edit()
и один раз вызватьcommit()
. - person Sam   schedule 18.02.2013context
,players
, может быть, даже одним из возвращаемых значений. - person Sam   schedule 18.02.2013