这是save()
我的应用程序中的方法:
public void save() {
Context context;
SharedPreferences sp = context.getSharedPreferences("gameSave",
Context.MODE_PRIVATE);
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 (String name, int mode)
一直没有为我工作。它不会自己出现,context.getSharedPreferences()
有效,但NullPointerException
我认为这是因为我的上下文而产生的。我已经尝试过save(Context context){}
作为构造函数,但是从另一个方法中调用它并且在该方法内部声明了上下文也不起作用。我看过很多例子,但没有一个对我有用。那我怎么getSharedPreferences()
去上班呢?
编辑:我有一个 GameScreen 类和一个 SaveManager 类。当我在 Gamescreen 中保存时,这是我使用的代码:
Savemanager savemanager;
savemanager.save();
state = GameState.Running;
我有我的班级 SaveManager:
package com.package.game;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
public class SaveManager extends Activity {
private Player player = GameScreen.getPlayer();
public void save() {
SharedPreferences sp = getSharedPreferences("gameSave",
Context.MODE_PRIVATE);
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());
}
}
当我在 GameScreen 中保存时,我的应用程序崩溃了,我得到了这个 logcat:
02-20 01:39:31.979: E/AndroidRuntime(1368): FATAL EXCEPTION: Thread-119
02-20 01:39:31.979: E/AndroidRuntime(1368): java.lang.NullPointerException
02-20 01:39:31.979: E/AndroidRuntime(1368): at com.package.game.GameScreen.updateLevelUp(GameScreen.java:364)
第 364 行是行savemanager.save();
。我不知道为什么这会使我的应用程序崩溃。