0

我正在尝试使用 SharedPreferences 检索 SwitchPreference 的值,但它不起作用。我正在使用 SwitchPreference 以便用户可以打开/关闭通知,但无论值是什么,它都会显示通知。这是代码。

NotificationUtils.java

SharedPreferences preferences = context.getSharedPreferences("MyPreferences", Context.MODE_PRIVATE);
    if (preferences.getBoolean("notification_key", true)) {
        notificationManager.notify(NOTIFICATION_ID + rowId, notBuilder.build());
    }

首选项.xml

<SwitchPreference
    android:contentDescription="Turn notifications on/off"
    android:defaultValue="true"
    android:key="notification_key"
    android:summaryOff="Off"
    android:summaryOn="On"
    android:title="Notifications" />

我还在 SettingsFragment.java 中覆盖并注册了 OnSharedPreferenceChange 侦听器。

4

2 回答 2

1

尝试更换

SharedPreferences preferences = context.getSharedPreferences("MyPreferences", Context.MODE_PRIVATE);

PreferenceManager.getDefaultSharedPreferences(context);

我相信您正在尝试"notification_key"从错误中检索SharedPreferences,这就是为什么它始终使用默认值true并显示您的通知的原因。

编辑:SharedPreferences您可以检查您正在使用的方法是否包含“notification_key”键contains()

于 2017-07-08T07:43:16.713 回答
0

我解决了它,实际上该值没有切换,在设置屏幕中开关正在关闭和打开,但该值仍然是默认值。通过在 OnPreferenceChangeListener 中设置新值来解决它并且有效。

于 2017-07-09T06:38:34.763 回答