diff --git a/src/com/android/settings/inputmethod/InputMethodPreference.java b/src/com/android/settings/inputmethod/InputMethodPreference.java
index 90eef85..6402dff 100644
--- a/src/com/android/settings/inputmethod/InputMethodPreference.java
+++ b/src/com/android/settings/inputmethod/InputMethodPreference.java
@@ -66,10 +66,10 @@
                 return;
             }
             if (isChecked()) {
-                setChecked(false);
+                setChecked(false, true /* save */);
             } else {
                 if (mAlwaysChecked) {
-                    setChecked(true);
+                    setChecked(true, true /* save */);
                 } else {
                     showSecurityWarnDialog(mImi, InputMethodPreference.this);
                 }
@@ -222,14 +222,25 @@
         setSummary(summary);
     }
 
-    @Override
-    public void setChecked(boolean checked) {
+    /**
+     * Sets the checkbox state and optionally saves the settings.
+     * @param checked whether to check the box
+     * @param save whether to save IME settings
+     */
+    public void setChecked(boolean checked, boolean save) {
         super.setChecked(checked);
-        saveImeSettings();
+        if (save) {
+            saveImeSettings();
+        }
         updateSummary();
     }
 
-    private void showSecurityWarnDialog(InputMethodInfo imi, final CheckBoxPreference chkPref) {
+    @Override
+    public void setChecked(boolean checked) {
+        setChecked(checked, false);
+    }
+
+    private void showSecurityWarnDialog(InputMethodInfo imi, final InputMethodPreference chkPref) {
         if (mDialog != null && mDialog.isShowing()) {
             mDialog.dismiss();
         }
@@ -241,7 +252,7 @@
                         new DialogInterface.OnClickListener() {
                     @Override
                     public void onClick(DialogInterface dialog, int which) {
-                        chkPref.setChecked(true);
+                        chkPref.setChecked(true, true);
                     }
                 })
                 .setNegativeButton(android.R.string.cancel,
