diff --git a/src/com/android/launcher3/SettingsActivity.java b/src/com/android/launcher3/SettingsActivity.java
index d5d5eab..fa7769e 100644
--- a/src/com/android/launcher3/SettingsActivity.java
+++ b/src/com/android/launcher3/SettingsActivity.java
@@ -34,7 +34,6 @@
 import android.preference.PreferenceFragment;
 import android.provider.Settings;
 import android.provider.Settings.System;
-import android.view.View;
 
 import com.android.launcher3.graphics.IconShapeOverride;
 import com.android.launcher3.notification.NotificationListener;
@@ -172,7 +171,7 @@
      * and updates the launcher badging setting subtext accordingly.
      */
     private static class IconBadgingObserver extends ContentObserver
-            implements View.OnClickListener {
+            implements Preference.OnPreferenceClickListener {
 
         private final ButtonPreference mBadgingPref;
         private final ContentResolver mResolver;
@@ -205,14 +204,16 @@
                     summary = R.string.title_missing_notification_access;
                 }
             }
-            mBadgingPref.setButtonOnClickListener(serviceEnabled ? null : this);
+            mBadgingPref.setWidgetFrameVisible(!serviceEnabled);
+            mBadgingPref.setOnPreferenceClickListener(serviceEnabled ? null : this);
             mBadgingPref.setSummary(summary);
 
         }
 
         @Override
-        public void onClick(View view) {
+        public boolean onPreferenceClick(Preference preference) {
             new NotificationAccessConfirmation().show(mFragmentManager, "notification_access");
+            return true;
         }
     }
 
diff --git a/src/com/android/launcher3/views/ButtonPreference.java b/src/com/android/launcher3/views/ButtonPreference.java
index 4697e25..fdcf2ca 100644
--- a/src/com/android/launcher3/views/ButtonPreference.java
+++ b/src/com/android/launcher3/views/ButtonPreference.java
@@ -28,7 +28,7 @@
  */
 public class ButtonPreference extends Preference {
 
-    private View.OnClickListener mClickListener;
+    private boolean mWidgetFrameVisible = false;
 
     public ButtonPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
         super(context, attrs, defStyleAttr, defStyleRes);
@@ -46,9 +46,9 @@
         super(context);
     }
 
-    public void setButtonOnClickListener(View.OnClickListener clickListener) {
-        if (mClickListener != clickListener) {
-            mClickListener = clickListener;
+    public void setWidgetFrameVisible(boolean isVisible) {
+        if (mWidgetFrameVisible != isVisible) {
+            mWidgetFrameVisible = isVisible;
             notifyChanged();
         }
     }
@@ -59,12 +59,7 @@
 
         ViewGroup widgetFrame = view.findViewById(android.R.id.widget_frame);
         if (widgetFrame != null) {
-            View button = widgetFrame.getChildAt(0);
-            if (button != null) {
-                button.setOnClickListener(mClickListener);
-            }
-            widgetFrame.setVisibility(
-                    (mClickListener == null || button == null) ? View.GONE : View.VISIBLE);
+            widgetFrame.setVisibility(mWidgetFrameVisible ? View.VISIBLE : View.GONE);
         }
     }
 }
