diff --git a/app/src/main/java/org/omnirom/control/ChargingControlSettings.java b/app/src/main/java/org/omnirom/control/ChargingControlSettings.java
index 821503a..b00be47 100644
--- a/app/src/main/java/org/omnirom/control/ChargingControlSettings.java
+++ b/app/src/main/java/org/omnirom/control/ChargingControlSettings.java
@@ -28,6 +28,7 @@
 
 import java.lang.reflect.Array;
 import java.util.Arrays;
+import java.util.UUID;
 import java.util.stream.Stream;
 
 import org.omnirom.control.R;
@@ -36,11 +37,13 @@
 import org.omnirom.control.health.StartTimePreference;
 import org.omnirom.control.health.TargetTimePreference;
 import org.omnirom.control.health.ChargingLimitPreference;
+import org.omnirom.control.widget.CustomDialogPreference;
 
 import omnirom.health.HealthInterface;
 import androidx.annotation.DrawableRes;
 import androidx.annotation.XmlRes;
 import androidx.preference.ListPreference;
+import androidx.preference.Preference;
 import omnirom.preference.SystemSettingSwitchPreference;
 
 import static omnirom.health.HealthInterface.MODE_AUTO;
@@ -129,6 +132,29 @@
         });
     }
 
+    public void onDialogShowing() {
+        // override in subclass to attach a dismiss listener, for instance
+    }
+
+    @Override
+    public void onDisplayPreferenceDialog(Preference preference) {
+        if (preference.getKey() == null) {
+            // Auto-key preferences that don't have a key, so the dialog can find them.
+            preference.setKey(UUID.randomUUID().toString());
+        }
+        CustomDialogPreference.CustomPreferenceDialogFragment f = null;
+        if (preference instanceof CustomDialogPreference) {
+            f = CustomDialogPreference.CustomPreferenceDialogFragment
+                    .newInstance(preference.getKey());
+        } else {
+            super.onDisplayPreferenceDialog(preference);
+            return;
+        }
+        f.setTargetFragment(this, 0);
+        f.show(getParentFragmentManager(), "dialog_preference");
+        onDialogShowing();
+    }
+
     @Override
     public void onResume() {
         super.onResume();
