2014-01-16 2 views
0

Я пытаюсь использовать SharedPreferences в своем приложении, но он просто не работает.SharedPerferences, похоже, не работает

Во-первых, я объявляю SharedPreferences как глобальную переменную в деятельности, где я планирую использовать их:

SharedPreferences prefs; 

Затем я установил SharedPreferences по умолчанию в OnCreate:

prefs = getSharedPreferences("urnikSp", 0); 
SharedPreferences.Editor editor = prefs.edit(); 
editor.putBoolean("schudeleDownloaded", false); 
editor.commit(); 

Я тогда изменить логическое значение при завершении определенного действия:

prefs.edit().putBoolean("schudeleDownloaded", true).commit(); 

А затем в одной и той же деятельности (при перезапуске), проверить на логическое значение в OnCreate, как это:

boolean schudeleDownloaded = prefs.getBoolean("schudeleDownloaded", false); 
if (!schudeleDownloaded){ 
    new PopulateDatabase().execute(); 
} 

И хотя я четко установить новое значение «истинного» после завершения определенного действия, ПЧ оператор, который вы видите выше, все еще выполняется, потому что логическое значение все еще кажется ложным.

Что я делаю неправильно?

+0

кажется правильным ... Вы уверены, что этот код является один вы написали? – Massimo

+0

Пожалуйста, разместите всю свою функцию onCreate(). – Melquiades

+0

Я бы сказал, что ваша деятельность уничтожена, и во второй раз, когда вызывается onCreate, установите значение false. – s1m3n

ответ

0

Если вы воссоздавать вашу активность, OnCreate() метод будет вызываться снова, так что я думаю, что вы измените его значение обратно к ложному

-1

Вам необходимо создать отдельный экземпляр SharedPreferences.Editor. Так что вместо того, чтобы сделать это:

prefs.edit().putBoolean("schudeleDownloaded", true).commit(); 

Попробуйте это:

SharedPreferences.Editor editor = prefs.edit(); 
editor.putBoolean("schedeleDownloaded", true); 
editor.commit(); 
+2

Этот ответ неверен. Я использую первый метод регулярно. Второй метод также будет работать, но это не проблема проблемы. – ScouseChris

+0

@ScouseChris Хм. Я на самом деле исправил проблему с SharedPrefernences, не совершающим подобные действия. Но это могло быть связано с более ранней версией Android? Я проверю, могу ли я найти ответ, потому что в то время я спросил его на SO. Этот ответ на самом деле помог мне решить проблему. –

+0

Интересно, что методы на SharedPreferences.Editor должны возвращать экземпляр этого редактора, чтобы вы могли цеплять вызовы точно так же, как в исходном коде. – ScouseChris

0

Позвольте мне сделать дикое предположение. Потому что, когда вы перезагружаетесь, вы снова устанавливаете значение false. Оно находится в функции onCreate.

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