Android SwitchPreference无法正常工作

时间:2017-07-08 07:31:11

标签: android sharedpreferences android-preferences android-sharedpreferences switchpreference

我尝试使用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());
    }

的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" />

我也在SettingsFragment.java中重写并注册了OnSharedPreferenceChange侦听器。

2 个答案:

答案 0 :(得分:0)

尝试替换

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

PreferenceManager.getDefaultSharedPreferences(context);

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

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

答案 1 :(得分:0)

我解决了它,实际上值没有切换,在设置屏幕中Switch关闭然后打开但值仍然是默认值。通过在OnPreferenceChangeListener中设置新值并解决了这个问题。