Java 加载SharedReferences时Android应用程序崩溃';getBoolean';
我想保存游戏中的设置(音乐、声音和振动),但在加载应用程序时启动时崩溃。 代码是:Java 加载SharedReferences时Android应用程序崩溃';getBoolean';,java,android,Java,Android,我想保存游戏中的设置(音乐、声音和振动),但在加载应用程序时启动时崩溃。 代码是: private SharedPreferences preferences; private SharedPreferences.Editor editor; private boolean bgMusicToggleState, soundToggleState, vibratorToggleState; ... @Override protected void onCreate(Bundle savedIn
private SharedPreferences preferences;
private SharedPreferences.Editor editor;
private boolean bgMusicToggleState, soundToggleState, vibratorToggleState;
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
dialog = new Dialog(this, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
dialog.getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
dialog.setContentView(R.layout.pause_dialog);
dialog.hide();
initDialog();
this.preferences = this.getSharedPreferences(GAME_NAME, MODE_PRIVATE);
this.editor = preferences.edit();
...
}
...
public void saveMusicSettings(){
editor.putBoolean("bgMusicToggleState", bgmusic_toggle.isChecked());
editor.commit();
}
public void saveVibratorSettings(){
editor.putBoolean("vibratorToggleState", vibrateToggle.isChecked());
editor.commit();
}
public void saveSoundSettings(){
editor.putBoolean("soundToggleState", sounds_toggle.isChecked());
editor.commit();
}
...
private void initDialog(){
/// The App crashes here
bgMusicToggleState = preferences.getBoolean("bgMusicToggleState", false);
continue_Button = (Button) dialog.findViewById(R.id.continue_button);
restart_Button = (Button) dialog.findViewById(R.id.restart_button);
exit_Button = (Button) dialog.findViewById(R.id.exit_button);
continue_Button.setOnClickListener(pauseClick);
exit_Button.setOnClickListener(pauseClick);
restart_Button.setOnClickListener(pauseClick);
bgmusic_toggle = (ToggleButton) dialog.findViewById(R.id.backgroundsound_toggle);
bgmusic_toggle.setChecked(bgMusicToggleState);
bgmusic_toggle.setOnClickListener(toggleClickListener);
sounds_toggle = (ToggleButton) dialog.findViewById(R.id.soundtoggle);
sounds_toggle.setChecked(soundToggleState);
sounds_toggle.setOnClickListener(toggleClickListener);
vibrateToggle = (ToggleButton)dialog.findViewById(R.id.vibrate_toggle);
vibrateToggle.setChecked(vibratorToggleState);
vibrateToggle.setOnClickListener(toggleClickListener);
}
-->保存设置在toggleClickListener中调用
如果preferenes和编辑器在initMethod中,则没有区别。。。
可能是切换按钮在对话框中,还是我必须用一种方法来实现?
我希望你能帮助我。
谢谢 您必须在初始化
SharedReference
对象之后而不是之前调用initDialog
。
改变
到
请发布崩溃日志
initDialog();
this.preferences = this.getSharedPreferences(GAME_NAME, MODE_PRIVATE);
this.editor = preferences.edit();
this.preferences = this.getSharedPreferences(GAME_NAME, MODE_PRIVATE);
this.editor = preferences.edit();
initDialog();