0

编辑:问题不在于 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) 它必须被初始化,或者不是?

谢谢大家的帮助,

最好的祝福!

4

1 回答 1

2

SOUND 不能为 null(布尔值是原始类型,可以未初始化,但不能为 null)。更可能的答案是“ding”为空。

于 2012-09-13T17:43:05.623 回答