Android - SharedPreferences和NullPointException

时间:2012-09-13 17:30:49

标签: android nullpointerexception sharedpreferences

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

感谢您的帮助,

最好的问候!

1 个答案:

答案 0 :(得分:2)

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