これは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();
です。これが私のアプリをクラッシュさせる理由がわかりません。