2014-10-22 5 views
0

Я пытаюсь очистить список, для которого мне нужно очистить SharedPreference. Но при этом я получаю исключение nullpointer. Вот мой код. -SharedPreference clear() throwing nullpointerexception

MainActivity.savedLogName.edit().clear().commit(); 
MainActivity.savedLogNumber.edit().clear().commit(); 
MainActivity.savedLogTime.edit().clear().commit(); 

Я также пробовал использовать remove(), но та же ошибка сохраняется. Вот код, с помощью удаления()

MainActivity.savedLogName.edit().remove("logName").commit(); 
MainActivity.savedLogNumber.edit().remove("logNumber").commit(); 
MainActivity.savedLogTime.edit().remove("logTime").commit(); 

Примечание - savedlogName, savedLogNumber и savedLogTime статические переменные, объявленные в MainActivity. Я называю их из другого класса деятельности.

От MainActivity -

savedLogName = PreferenceManager.getDefaultSharedPreferences(this); 
     savedLogNumber = PreferenceManager.getDefaultSharedPreferences(this); 
     savedLogTime = PreferenceManager.getDefaultSharedPreferences(this); 

    logName = new ArrayList(Arrays.asList(TextUtils.split(savedLogName.getString("logName", null), ","))); 
    logNumber = new ArrayList(Arrays.asList(TextUtils.split(savedLogNumber.getString("logNumber", null), ","))); 
    logTime = new ArrayList(Arrays.asList(TextUtils.split(savedLogTime.getString("logTime", null), ","))); 

Я хочу LogName, logNumber и logTime быть intialized нулевое значение, если sharedPreference пуст. Этого не происходит. Он просто инициализирует старые значения, как никогда не очищался.

+0

Добавьте код, где вы иницизировать статику savedLogName, Number и т.д. – Simas

+0

@ user3249477 сделано. Отредактировано описание. – Slay

ответ

1
context.getSharedPreferences("YOUR_PREFS", 0).edit().clear().commit(); 

удалить все префы

или получить редактор и ясно, как этот

editor.clear(); 
editor.commit(); 
+0

Привет, это работает, но журнал просто продолжает возвращаться каждый раз, когда я перезапускаю приложение, потому что переменные SharedPreference инициализируются в onCreate() MainActivity. Как этого избежать? – Slay

+0

Что я понимаю, это внутри onCreate(), вы очищаете общий префикс и печатаете несколько журналов? Если это случай, тогда поместите его в оператор if, если sharepref очищен (пустой или пустой), пропустите log msg. (Пожалуйста, отправьте основной код операции, который поможет отладить). –

+0

Я имел в виду журнал вызовов. Я только что отредактировал и разместил код MainActivity. Не могли бы вы взглянуть – Slay

Смежные вопросы