当前位置 : 主页 > 手机开发 > android >

android – 无法使用Preferences保存或加载Integer

来源:互联网 收集:自由互联 发布时间:2021-06-11
所以我构建了一个类似于SaveAndLoad的类: public class SaveAndLoad { public Preferences pref; public final String path = "Highscore"; public SaveAndLoad() { pref = Gdx.app.getPreferences("Gametitle"); } public void saveInt(int v
所以我构建了一个类似于SaveAndLoad的类:

public class SaveAndLoad {
    public Preferences pref;
    public final String path = "Highscore";

    public SaveAndLoad() {
        pref = Gdx.app.getPreferences("Gametitle");
    }

    public void saveInt(int value) {
        pref.putInteger(path, value);
        pref.flush();
    }

    public int getInt() {
        return pref.getInteger(path);
    }
}

当我尝试保存我的高分时,我会调用saveInt(高分),当你再次打开游戏时我会调用getInt.

constructor(){
        SaveAndLoad sdRemote = new SaveAndLoad ();
        try {
            highscore = sdRemote.getInt();
      } catch (NullPointerException e) {
            highscore = 0;
      }
    }

问题是当我在早期游戏之后再次开始游戏时,高分不加载,它返回零…

我已经完成了明确许可:
    

谢谢
///丹尼尔

PS.在最后一个答案中,我说它适用于某些设备,但我后来发现并非如此.

确保检索这样的数据:

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
int silent = settings.getInt("score", 0);

并保存如下:

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
  SharedPreferences.Editor editor = settings.edit();
  editor.putInt("score", playerScore);
  // Commit the edits!
  editor.commit(); //<----------

编辑:

啊,你在使用GDX.在这种情况下,请确保在GDX初始化后初始化此类.检查是否有Gdx.app.getPreferences(“游戏”);返回null.

EDIT2:

好的,所以我们已经确认Gdx在某些设备上存在问题(很糟糕).

如果你真的需要在桌面设备和Android设备上使用它,还有另一种方法.如果你只是想让你的游戏在Android上工作,你就不应该使用Gdx来保存数据.

我建议你使用一种称为GDX And​​roid界面的东西.这样您就可以使用本答案中使用的原生Android调用自行处理在Android设备上保存数据.这不是很容易,但这里有一个教程:

https://code.google.com/p/libgdx-users/wiki/IntegratingAndroidNativeUiElements3TierProjectSetup

网友评论