编辑:问题不在于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为null。但为什么?由于SOUND = pref.getBoolean(“SOUND”,true),必须是否已初始化?
感谢您的帮助,
最好的问候!答案 0 :(得分:2)
SOUND不能为空(布尔值是原始类型,可以是未初始化的,但不是null)。更可能的答案是“ding”为空。