Запазвам няколко променливи с помощта на 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, така че защо това не работи?
РЕДАКТИРАНЕ: Ето логката
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().
Опитайте се да използвате разделител (сепаратор) поне като
[div1 content]~[div2 content]~[div3 content]
, ако не можете да добавите три различни колони.В javascript можете да използвате функцията
split
, за да получите съдържанието на три раздела поотделно сега.Ако искате да използвате като разделител, тогава
- person Raghav Sood   schedule 18.02.2013safeFile.edit()
и извикване наcommit()
веднъж. - person Sam   schedule 18.02.2013context
,players
, може би дори една от върнатите стойности. - person Sam   schedule 18.02.2013