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」が null であるということです。

于 2012-09-13T17:43:05.623 に答える