Выбор предпочтений всегда остается по умолчанию - PullRequest
1 голос
/ 11 февраля 2011

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

public class Reciever extends BroadcastReceiver {
boolean smsOn = false;
    String smsColor = new String ("Green");
    Uri smsSound;
    String smsVibrate = new String ("Normal");

    SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(arg0);

     smsOn = pref.getBoolean(Preferences."PREF_SMS_ON", false);
     smsColor = pref.getString(Preferences.SMS_PREF_COLOR, "Green");
     smsSound = Uri.parse(pref.getString(Preferences.SMS_PREF_SOUND, "Silent"));
     smsVibrate = pref.getString(Preferences.SMS_PREF_SOUND, "Normal");

             //all variable remain default value verified through debugger

       NotificationManager mNotificationManager = (NotificationManager) arg0.getSystemService(Context.NOTIFICATION_SERVICE);
        if (arg1.getAction().equals(ACTION)){
            if(smsOn == true){....... if checkbox is checked  smsOn still remains false 
}

класс предварительной активности

public class Preferences extends PreferenceActivity implements OnPreferenceClickListener{
public static final String PREF_SMS_ON = "PREF_SMS_ON";
public static final String VIBRATE_ON_CALL1 = "VIBRATE_ON_CALL1";
public static final String SMS_PREF_COLOR = "SMS_PREF_COLOR";
public static final String SMS_PREF_SOUND = "SMS_PREF_SOUND";
public static final String SMS_PREF_VIB = "SMS_PREF_VIB";
}

XML-файл (я просто скопирую один)

    <CheckBoxPreference 
        android:key="PREF_SMS_ON"
        android:title="SMS Notifications"
        android:summary="Turn On SMS Notifications"
        android:defaultValue="false">
    </CheckBoxPreference>  

Я не понимаю, в чем дело, все выглядит так, как будто это должно работать для меня

1 Ответ

3 голосов
/ 11 февраля 2011

Ну, есть некоторые проблемы в вашем коде. Этот учебник хорош для создания настроек. Кроме того, если вы хотите изменить настройки за пределами PreferenceActivity, вы должны использовать редактор Например:

Editor e = PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit();
e.putBoolean(Preferences."PREF_SMS_ON", true);
e.commit();

Надеюсь, это поможет

Ответ на ваш комментарий

хорошо, дело в том, что вы используете PreferenceActivity, который, как показано в документации здесь , используется для отображения визуального стиля предпочтений. Также, как указано здесь , «настройки будут автоматически сохранены в SharedPreferences при взаимодействии пользователя с ними». У меня сложилось впечатление, что вы хотели изменить предпочтения за пределами PreferenceActivity (что не так), но вы говорите, что это не то, что вы хотите сделать.

Однако я заметил, что ваш PreferenceActivity не загружает настройки из файла ресурсов, для этого вам нужно добавить, например, addPreferencesFromResource(R.xml.settings); в ваш onCreate. Но, как я уже сказал, ваши предпочтения изменятся автоматически только в том случае, если пользователь напрямую взаимодействует с этим действием. Я надеюсь, что это помогает.

...