diff --git a/src/com/android/settings/wifi/AdvancedSettings.java b/src/com/android/settings/wifi/AdvancedSettings.java
index 2adf072..5906e70 100644
--- a/src/com/android/settings/wifi/AdvancedSettings.java
+++ b/src/com/android/settings/wifi/AdvancedSettings.java
@@ -64,6 +64,7 @@
         addPreferencesFromResource(R.xml.wifi_advanced_settings);
         
         mUseStaticIpCheckBox = (CheckBoxPreference) findPreference(KEY_USE_STATIC_IP);
+        mUseStaticIpCheckBox.setOnPreferenceChangeListener(this);
 
         for (int i = 0; i < mPreferenceKeys.length; i++) {
             Preference preference = findPreference(mPreferenceKeys[i]);
@@ -167,7 +168,16 @@
                         Toast.LENGTH_SHORT).show();
                 return false;
             }
-                
+
+        } else if (key.equals(KEY_USE_STATIC_IP)) {
+            boolean value = ((Boolean) newValue).booleanValue();
+
+            try {
+                Settings.System.putInt(getContentResolver(),
+                        Settings.System.WIFI_USE_STATIC_IP, value ? 1 : 0);
+            } catch (NumberFormatException e) {
+                return false;
+            }
         } else {
             String value = (String) newValue;
             
@@ -177,6 +187,12 @@
             }
             
             preference.setSummary(value);
+            for (int i = 0; i < mSettingNames.length; i++) {
+                if (key.equals(mPreferenceKeys[i])) {
+                    Settings.System.putString(getContentResolver(), mSettingNames[i], value);
+                    break;
+                }
+            }
         }
         
         return true;
