【发布时间】:2012-07-23 12:33:12
【问题描述】:
我正在使用下一个代码。 此代码在桌面版本上运行良好,但在 Android 设备上却不行。 返回 Gdx.app.getPreferences(PREFS_NAME) 始终为空。 为什么?哪里会出错?
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Preferences;
public class BeatlesPreferences {
// constants
private static final String PREF_VIBRO = "vibro";
private static final String PREF_MUSIC_ENABLED = "musicenabled";
private static final String PREF_SOUND_ENABLED = "soundenabled";
private static final String PREFS_NAME = "my_app";
public BeatlesPreferences() {
}
protected Preferences getPrefs() {
return Gdx.app.getPreferences(PREFS_NAME);
}
public boolean isSoundEffectsEnabled() {
return getPrefs().getBoolean(PREF_SOUND_ENABLED, true);
}
public void setSoundEffectsEnabled(boolean soundEffectsEnabled) {
getPrefs().putBoolean(PREF_SOUND_ENABLED, soundEffectsEnabled);
getPrefs().flush();
}
public boolean isMusicEnabled() {
return getPrefs().getBoolean(PREF_MUSIC_ENABLED, true);
}
public void setMusicEnabled(boolean musicEnabled) {
getPrefs().putBoolean(PREF_MUSIC_ENABLED, musicEnabled);
getPrefs().flush();
}
public boolean isVibroEnabled() {
return getPrefs().getBoolean(PREF_VIBRO, true);
}
public void setVibroEnabled(boolean vibro) {
getPrefs().putBoolean(PREF_VIBRO, vibro);
getPrefs().flush();
}
}
【问题讨论】:
-
请包含错误堆栈跟踪。我怀疑您在 Gdx.app 初始化之前到达
getPrefs(尽管这应该与桌面类似)。您应该考虑添加一些assert检查 Gdx.app 是否为非 null 以区别于getPreferences返回 null 等。