編集: 問題は 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) のため、初期化する必要がありますか?
助けてくれてありがとう
よろしくお願いします!