diff --git a/res/xml/wireless_settings.xml b/res/xml/wireless_settings.xml
index ac5a7be..a2ddcdb 100644
--- a/res/xml/wireless_settings.xml
+++ b/res/xml/wireless_settings.xml
@@ -19,7 +19,7 @@
         android:title="wireless_settings"
         android:key="@string/radio_controls_title">
 
-    <CheckBoxPreference
+    <SwitchPreference
         android:key="toggle_airplane"
         android:title="@string/airplane_mode"
         android:persistent="false"
diff --git a/src/com/android/settings/AirplaneModeEnabler.java b/src/com/android/settings/AirplaneModeEnabler.java
index d1c591e..4ce5198 100644
--- a/src/com/android/settings/AirplaneModeEnabler.java
+++ b/src/com/android/settings/AirplaneModeEnabler.java
@@ -25,6 +25,7 @@
 import android.os.UserHandle;
 import android.preference.CheckBoxPreference;
 import android.preference.Preference;
+import android.preference.SwitchPreference;
 import android.provider.Settings;
 
 import com.android.internal.telephony.PhoneStateIntentReceiver;
@@ -36,7 +37,7 @@
 
     private PhoneStateIntentReceiver mPhoneStateReceiver;
     
-    private final CheckBoxPreference mCheckBoxPref;
+    private final SwitchPreference mSwitchPref;
 
     private static final int EVENT_SERVICE_STATE_CHANGED = 3;
 
@@ -58,10 +59,10 @@
         }
     };
 
-    public AirplaneModeEnabler(Context context, CheckBoxPreference airplaneModeCheckBoxPreference) {
+    public AirplaneModeEnabler(Context context, SwitchPreference airplaneModeCheckBoxPreference) {
         
         mContext = context;
-        mCheckBoxPref = airplaneModeCheckBoxPreference;
+        mSwitchPref = airplaneModeCheckBoxPreference;
         
         airplaneModeCheckBoxPreference.setPersistent(false);
     
@@ -71,10 +72,10 @@
 
     public void resume() {
         
-        mCheckBoxPref.setChecked(isAirplaneModeOn(mContext));
+        mSwitchPref.setChecked(isAirplaneModeOn(mContext));
 
         mPhoneStateReceiver.registerIntent();
-        mCheckBoxPref.setOnPreferenceChangeListener(this);
+        mSwitchPref.setOnPreferenceChangeListener(this);
         mContext.getContentResolver().registerContentObserver(
                 Settings.Global.getUriFor(Settings.Global.AIRPLANE_MODE_ON), true,
                 mAirplaneModeObserver);
@@ -82,7 +83,7 @@
     
     public void pause() {
         mPhoneStateReceiver.unregisterIntent();
-        mCheckBoxPref.setOnPreferenceChangeListener(null);
+        mSwitchPref.setOnPreferenceChangeListener(null);
         mContext.getContentResolver().unregisterContentObserver(mAirplaneModeObserver);
     }
 
@@ -96,7 +97,7 @@
         Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, 
                                 enabling ? 1 : 0);
         // Update the UI to reflect system setting
-        mCheckBoxPref.setChecked(enabling);
+        mSwitchPref.setChecked(enabling);
         
         // Post the intent
         Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
@@ -113,7 +114,7 @@
      * - mobile does not send failure notification, fail on timeout.
      */
     private void onAirplaneModeChanged() {
-        mCheckBoxPref.setChecked(isAirplaneModeOn(mContext));
+        mSwitchPref.setChecked(isAirplaneModeOn(mContext));
     }
     
     /**
diff --git a/src/com/android/settings/WirelessSettings.java b/src/com/android/settings/WirelessSettings.java
index 39d0f4c..b63a5a1 100644
--- a/src/com/android/settings/WirelessSettings.java
+++ b/src/com/android/settings/WirelessSettings.java
@@ -39,6 +39,7 @@
 import android.preference.Preference;
 import android.preference.Preference.OnPreferenceChangeListener;
 import android.preference.PreferenceScreen;
+import android.preference.SwitchPreference;
 import android.provider.SearchIndexableResource;
 import android.provider.Settings;
 import android.telephony.TelephonyManager;
@@ -79,7 +80,7 @@
     public static final int REQUEST_CODE_EXIT_ECM = 1;
 
     private AirplaneModeEnabler mAirplaneModeEnabler;
-    private CheckBoxPreference mAirplaneModePreference;
+    private SwitchPreference mAirplaneModePreference;
     private NfcEnabler mNfcEnabler;
     private NfcAdapter mNfcAdapter;
     private NsdEnabler mNsdEnabler;
@@ -254,7 +255,7 @@
         final boolean isSecondaryUser = UserHandle.myUserId() != UserHandle.USER_OWNER;
 
         final Activity activity = getActivity();
-        mAirplaneModePreference = (CheckBoxPreference) findPreference(KEY_TOGGLE_AIRPLANE);
+        mAirplaneModePreference = (SwitchPreference) findPreference(KEY_TOGGLE_AIRPLANE);
         CheckBoxPreference nfc = (CheckBoxPreference) findPreference(KEY_TOGGLE_NFC);
         PreferenceScreen androidBeam = (PreferenceScreen) findPreference(KEY_ANDROID_BEAM_SETTINGS);
         CheckBoxPreference nsd = (CheckBoxPreference) findPreference(KEY_TOGGLE_NSD);
