编辑:问题不在于 SharedPreference!这是我的 wav 数据。Android 仅支持 8 位和 16 位线性 PCM 波形格式。我使用了 32 位浮点数。
今天我通过 BugSense 收到了一个错误报告。由于 sharedPreferences,用户有 NullPointException。我第一次收到这个错误。
这是我的相关代码:
我设置 sharedPreference 的设置:
private void dialogSettings() {
final Dialog dialog = new Dialog(this, R.style.dialog_style);
dialog.setContentView(R.layout.dialog_settings);
final CheckBox sound = (CheckBox) dialog.findViewById(R.id.checkBoxSound);
final CheckBox vibration = (CheckBox) dialog.findViewById(R.id.checkBoxVibration);
final SharedPreferences pref = getSharedPreferences("SETTINGS", 0);
sound.setChecked(pref.getBoolean("SOUND", true));
vibration.setChecked(pref.getBoolean("VIBRATION", true));
Button buttonSave = (Button) dialog.findViewById(R.id.buttonSave);
buttonSave.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
SharedPreferences.Editor editor = pref.edit();
editor.putBoolean("SOUND", sound.isChecked());
editor.putBoolean("VIBRATION", vibration.isChecked());
editor.commit();
dialog.dismiss();
}
});
dialog.show();
}
“SOUND”(其他活动)的使用:
private boolean SOUND;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.game_normal_layout);
SharedPreferences pref = getSharedPreferences("SETTINGS", 0);
SOUND = pref.getBoolean("SOUND", true);
....
}
private void evaluateAnswer() {
if(correct) {
if(SOUND) { // LINE 259
ding.seekTo(0);
ding.start();
}
...
}
这是例外:
java.lang.NullPointerException
at mindmApp.quiz.GameNormalActivity.evaluateAnswer(GameNormalActivity.java:259)
因此,变量 SOUND 为空。但为什么?因为 SOUND = pref.getBoolean("SOUND", true) 它必须被初始化,或者不是?
谢谢大家的帮助,
最好的祝福!