我很难掌握如何在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对象。
答案 0 :(得分:1)
从框架中获取您的首选项对象(确保在阅读和写作时获得相同的名称)
Preferences prefs = Gdx.app.getPreferences("My Preferences");
将一个布尔值保存到prefs对象:
prefs.putBoolean("soundOn", true);
prefs.flush();
从prefs对象中读取布尔值:
prefs.getBoolean("soundOn");
参考wiki:
答案 1 :(得分:0)
首先,确保您已导入正确的Braces placement
依赖项,Android和Java都有一个。
尝试使用.flush
代替.apply()
文档here
由于SharedPreferences实例是进程中的单例,如果您已经忽略了返回值,则可以安全地用apply()替换任何commit()实例。