在首选项中存储布尔值

时间:2015-04-22 15:59:59

标签: android libgdx preferences

我很难掌握如何在LIBGDX中根据偏好存储/读取布尔值。我使用它们的原因是,如果用户购买了一个项目,那么布尔值应该变为true并存储为true,直到另一个布尔值变为true,然后第一个将变为false。希望我以一种可以理解的方式展示自己。

这就是我所做的:

屏幕显示他们进行购买并按下按钮进行更改:

PurcScreen implements Screen {
changeStone1.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeEvent event, Actor actor) {
            ss.prefs.getBoolean("stone1", true);
            game.setScreen(ss);
        }

    });

这是他们购买的对象应该根据是否绘制而不是布尔值为真/假的屏幕:

MainScreen implements Screen {
public boolean stone1, stone2
public MainScreen {
stone1 = prefs.getBoolean("stone1");
stone2 = prefs.getBoolean("stone2");
if(stone1){
    setStone1();

    }
    if(stone2){
        setStone2();
    }
show() {
if(stone1) {
        setStone2();
        prefs.putBoolean("stone1", true);
        prefs.putBoolean("stone2", false);
}
if(stone2) {
        setStone2();
        prefs.putBoolean("stone1", false);
        prefs.putBoolean("stone2", true);
}
btnSave.addListener(new ChangeListener() {
@override
public void changed(ChangeEvent event, Actor actor) {
prefs.putBoolean("stone1", stone1);
prefs.putBoolean("stone2", stone2);
prefs.flush();
}

使用此代码,布尔人不会存储。绘制了stone2的图像/对象。但是当我点击“保存”按钮并重新进入屏幕时,将再次绘制原始的stone1对象。

2 个答案:

答案 0 :(得分:1)

从框架中获取您的首选项对象(确保在阅读和写作时获得相同的名称)

Preferences prefs = Gdx.app.getPreferences("My Preferences");

将一个布尔值保存到prefs对象:

prefs.putBoolean("soundOn", true);
prefs.flush();

从prefs对象中读取布尔值:

prefs.getBoolean("soundOn");

参考wiki:

https://github.com/libgdx/libgdx/wiki/Preferences

答案 1 :(得分:0)

首先,确保您已导入正确的Braces placement依赖项,Android和Java都有一个。

尝试使用.flush代替.apply()

文档here

  

由于SharedPreferences实例是进程中的单例,如果您已经忽略了返回值,则可以安全地用apply()替换任何commit()实例。

Further Reading