0

Добрый день.

Error java.lang.NullPointerException

Ошибка на строке с присвоением.
Если он ещё не создан, то есть дефаулт, почему NullPointerException?

SharedPreferences settings;
SharedPreferences.Editor editor;
boolean ifWasSet;

public void makeList() {
    ifWasSet = settings.getBoolean("comp", false);
    if (ifWasSet == true) {
        System.out.println("Ne dobavlyaem");
    } else {
        persons.add(student1);
        persons.add(student2);
        persons.add(student3);
        persons.add(student4);
        settings =
            getApplicationContext().getSharedPreferences(STORAGE_NAME, Context.MODE_PRIVATE);
        editor = settings.edit();
        editor.putBoolean("comp", true);
        editor.commit();
    }
}
αλεχολυτ
  • 28,987
  • 13
  • 60
  • 119
  • у вас переменная settings используется до if, а присваиваете значение вы ей только в блоке else. так должно быть? – Nikotin N Sep 30 '16 at 12:20
  • Дело в том, что у меня есть данные, которые нужно добавить только один раз. Сначала всё должно быть FALSE, а потом уже после одного добавления всегда TRUE. – T.Tester Sep 30 '16 at 12:27

1 Answers1

3

вы пытаетесь использовать settings до того, как запишете в него что-либо. ifWasSet = settings.getBoolean("comp",false); Сначала запишите что-нибудь в settings, а потом уже вызывайте у него методы.

  • Дело в том, что я не могу присвоить ему значение сначала, так как после пересоздания активити, значение измениться с TRUE на FALSE. – T.Tester Sep 30 '16 at 12:22
  • 2
    @T.Tester, а придется. Прежде, чем сказать, "машина, едь!" нужно купить машину. Если вы пустому месту скажете "едь", то ничего хорошего не произойдет. – Vladyslav Matviienko Sep 30 '16 at 12:25