EnGold
@EnGold

В чем проблема моего switch?

я пытаюсь сделать диалог с настройками, но я не могу правильно сохранить switch. При попытки его сохранить приложение вылетает. ошибка возникает при открытие диалога: Attempt to invoke virtual method "boolean android.widget.Switch.isChecked()" on a null object reference

//диалог
                    load();
                    AlertDialog.Builder builder = new AlertDialog.Builder(GameScreen.this);
                    RelativeLayout setting_screen = (RelativeLayout) getLayoutInflater().inflate(R.layout.setting, null);
                    builder.setView(setting_screen);
                    dialog = builder.create();
                    sw4 = dialog.findViewById(R.id.music);
                    dialog.show();

//работа свитча
public void onof(View view) {

        boolean on = ((Switch) view).isChecked();
        if (on) {
            ost = MediaPlayer.create(this, R.raw.ost);
            ost.start();
        } else {
            ost.stop();
        }
    }

//метод сохранения и загрузки состояния приложения
public void save(){
        SharedPreferences.Editor edit = saver.edit();
        edit.putInt(APP_STATE, Integer.valueOf(score.getText().toString()));
        edit.putBoolean(APP_MUSIC,sw4.isChecked());
        edit.commit();
        edit.apply();
    }

    public void load(){
        count = saver.getInt(APP_STATE,0);
 //       sw4.setChecked(saver.getBoolean(APP_MUSIC, true));
        if(saver.getBoolean(APP_MUSIC,true)){
            ost.start();
        }
        else{
            ost.stop();
        }

    }
  • Вопрос задан
  • 86 просмотров
Решения вопроса 1
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Attempt to invoke virtual method "boolean android.widget.Switch.isChecked()" on a null object reference

Ну тут как по мне довольно ясно написано, что вы пытаетесь вызвать метод isChecked() на объекте, который null
Исключение выбрасывается тут:
edit.putBoolean(APP_MUSIC,sw4.isChecked());
Потому, что sw4 = null
А значит, почему-то тут null:
sw4 = dialog.findViewById(R.id.music);
Посмотрите есть ли id music.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы