Я успешно выполняю, сохраняю и извлекаю свои общие настройки из своего mainActivity
, но я не могу получить его из моей службы...
По какой-то причине мои общие предпочтения имеют значение null, когда я пытаюсь получить его из фоновой службы...
Я инициализирую свои настройки в onCreate:
contactsPrefs = getSharedPreferences("contactsPrefs", MODE_PRIVATE); //Making a shared preferences
Сохранить значения в onCreate:
myEditor = contactsPrefs.edit();
Set<String> set = new HashSet<String>();
set.addAll(contactArrayList);
myEditor.clear(); //Clearing current values in shared pref
myEditor.putStringSet("contactSetKey", set); //Adding contacts
myEditor.commit();
Все это идет хорошо, но когда я пытаюсь получить доступ к моим настройкам из своей службы, я получаю null:
preferences = PreferenceManager.getDefaultSharedPreferences(c); //See edit at bottom for more info
if(preferences.getStringSet("contactSetKey", null) != null) {
contactArrayList.addAll(preferences.getStringSet("contactSetKey", null));
for (String number : contactArrayList) {
number.substring(number.indexOf("-") + 1); //Remove all characters before the hyphen from my string
Log.v(TAG, number);
}
}else{
Log.v(TAG, "Dagnabit it its null");
}
И к моему разочарованию, я получаю журнал Dagnabit it its null
. почему это пусто? Я могу заверить вас, что он работает из моего основного вида деятельности, потому что я могу отображать все свои данные из своих общих настроек, когда я обращаюсь к нему из своих общих предпочтений. Поэтому я знаю, что он не должен быть нулевым... Но по какой-то причине
Спасибо,
Ruchir
EDIT:
Я фактически регистрирую слушателя томов, используя контент-наблюдателя, и я пользуюсь предпочтениями оттуда. Здесь находится сервис:
mSettingsContentObserver = new volumeCheck(this, new Handler());
getApplicationContext().getContentResolver().registerContentObserver(android.provider.Settings.System.CONTENT_URI, true, mSettingsContentObserver);
Вот контент-наблюдатель:
public class volumeCheck extends ContentObserver {
public volumeCheck(Context c, Handler handler) {
super(handler); //Creates a new handler
context = c; //variable context, defined earlier, is set equal to c, context of service.
preferences = PreferenceManager.getDefaultSharedPreferences(c);
}