Android - Получите предпочтение от активности для приемника вещания - PullRequest
0 голосов
/ 18 января 2012

Я разрабатываю приложение для Android, но у меня проблема. Когда я пытаюсь получить сохраненную настройку из своей Активности и использовать ее в BroadcastReceiver, он говорит мне, что искомая строка не существует.

Вот как я могу сохранить настройки в Деятельности:

private void SavePreferences(String key, String value) {                         
  SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
  SharedPreferences.Editor editor = sharedPreferences.edit();
  editor.putString(key, value);
  editor.commit();
}

И вот как я пытаюсь получить предпочтение в BroadcastReceiver:

String pref = PreferenceManager.getDefaultSharedPreferences(context)
  .getString("MEM1", "Does not exist");

Где MEM1 - строка, которую я сохранил ранее.

Моя проблема в том, что когда я читаю pref, я получаю значение по умолчанию Does not exist вместо значения моего предпочтения (MEM1). Может кто-нибудь указать мне, где я иду не так?

Ответы [ 2 ]

1 голос
/ 18 января 2012
Activity.getPreferences(mode);

возвращает экземпляр SharedPreferences, специфичный для этого действия (как, например, XML-файл, поддерживающий его, будет называться так же, как и действие), в то время как общие предпочтения по умолчанию относятся к приложению (имя XML будетна основе имени вашего пакета).

Либо укажите свое имя файла каждый раз, когда вы получаете SharedPreferences, либо придерживайтесь значения по умолчанию.

0 голосов
/ 18 января 2012

Вы должны использовать ..

private void SavePreferences(String key, String value){

        SharedPreferences sharedPreferences = getPreferences("my_prefs", MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putString(key, value);
        editor.commit();
       }

И затем

String pref = getSharedPreferences("my_prefs", MODE_PRIVATE).getString("MEM1", "Does not exist");

Также убедитесь, что ваш ключ правильный.

...