Android SwitchPreference не работает
Я пытаюсь получить значение SwitchPreference с помощью SharedPreferences, но это не работает. Я использую SwitchPreference, чтобы пользователь мог включать / выключать уведомления, но он показывает уведомления независимо от того, какое значение это имеет. Вот код
NotificationUtils.java
SharedPreferences preferences = context.getSharedPreferences("MyPreferences", Context.MODE_PRIVATE);
if (preferences.getBoolean("notification_key", true)) {
notificationManager.notify(NOTIFICATION_ID + rowId, notBuilder.build());
}
preferences.xml
<SwitchPreference
android:contentDescription="Turn notifications on/off"
android:defaultValue="true"
android:key="notification_key"
android:summaryOff="Off"
android:summaryOn="On"
android:title="Notifications" />
Я также переопределил и зарегистрировал слушатель OnSharedPreferenceChange в SettingsFragment.java.
2 ответа
Я решил это, на самом деле значение не переключалось, на экране настроек Switch выключался и включался, но значение оставалось по умолчанию. Решил это, установив новое значение в OnPreferenceChangeListener, и это сработало.
Попробуйте заменить
SharedPreferences preferences = context.getSharedPreferences("MyPreferences", Context.MODE_PRIVATE);
с
PreferenceManager.getDefaultSharedPreferences(context);
Я полагаю, вы пытаетесь получить "notification_key"
от неправильного SharedPreferences
Именно поэтому он всегда использует значение по умолчанию true
и показывая ваше уведомление.
Изменить: Вы можете проверить, является ли SharedPreferences
вы используете содержит ключ "messages_key" с contains()
метод.