diff --git a/src/com/android/settings/DeviceAdminAdd.java b/src/com/android/settings/DeviceAdminAdd.java
index 26bd88a..63998e5 100644
--- a/src/com/android/settings/DeviceAdminAdd.java
+++ b/src/com/android/settings/DeviceAdminAdd.java
@@ -64,11 +64,11 @@
     DeviceAdminInfo mDeviceAdmin;
     CharSequence mAddMsgText;
     
-    TextView mTitle;
     ImageView mAdminIcon;
     TextView mAdminName;
     TextView mAdminDescription;
     TextView mAddMsg;
+    ImageView mAddMsgExpander;
     boolean mAddMsgEllipsized = true;
     TextView mAdminWarning;
     ViewGroup mAdminPolicies;
@@ -149,15 +149,15 @@
             }
         }
         mAddMsgText = getIntent().getCharSequenceExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION);
-        
+
         setContentView(R.layout.device_admin_add);
         
-        mTitle = (TextView)findViewById(R.id.title);
         mAdminIcon = (ImageView)findViewById(R.id.admin_icon);
         mAdminName = (TextView)findViewById(R.id.admin_name);
         mAdminDescription = (TextView)findViewById(R.id.admin_description);
 
         mAddMsg = (TextView)findViewById(R.id.add_msg);
+        mAddMsgExpander = (ImageView) findViewById(R.id.add_msg_expander);
         mAddMsg.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
                 toggleMessageEllipsis(v);
@@ -167,15 +167,15 @@
         // toggleMessageEllipsis also handles initial layout:
         toggleMessageEllipsis(mAddMsg);
 
-        mAdminWarning = (TextView)findViewById(R.id.admin_warning);
-        mAdminPolicies = (ViewGroup)findViewById(R.id.admin_policies);
-        mCancelButton = (Button)findViewById(R.id.cancel_button);
+        mAdminWarning = (TextView) findViewById(R.id.admin_warning);
+        mAdminPolicies = (ViewGroup) findViewById(R.id.admin_policies);
+        mCancelButton = (Button) findViewById(R.id.cancel_button);
         mCancelButton.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
                 finish();
             }
         });
-        mActionButton = (Button)findViewById(R.id.action_button);
+        mActionButton = (Button) findViewById(R.id.action_button);
         mActionButton.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
                 if (mAdding) {
@@ -269,6 +269,7 @@
             mAddMsg.setVisibility(View.VISIBLE);
         } else {
             mAddMsg.setVisibility(View.GONE);
+            mAddMsgExpander.setVisibility(View.GONE);
         }
         if (!mRefreshing && mDPM.isAdminActive(mDeviceAdmin.getComponent())) {
             if (mActivePolicies.size() == 0) {
@@ -285,7 +286,7 @@
             setViewVisibility(mAddingPolicies, View.GONE);
             mAdminWarning.setText(getString(R.string.device_admin_status,
                     mDeviceAdmin.getActivityInfo().applicationInfo.loadLabel(getPackageManager())));
-            mTitle.setText(getText(R.string.active_device_admin_msg));
+            setTitle(getText(R.string.active_device_admin_msg));
             mActionButton.setText(getText(R.string.remove_device_admin));
             mAdding = false;
         } else {
@@ -303,7 +304,7 @@
             setViewVisibility(mActivePolicies, View.GONE);
             mAdminWarning.setText(getString(R.string.device_admin_warning,
                     mDeviceAdmin.getActivityInfo().applicationInfo.loadLabel(getPackageManager())));
-            mTitle.setText(getText(R.string.add_device_admin_msg));
+            setTitle(getText(R.string.add_device_admin_msg));
             mActionButton.setText(getText(R.string.add_device_admin));
             mAdding = true;
         }
@@ -317,8 +318,7 @@
         tv.setEllipsize(mAddMsgEllipsized ? TruncateAt.END : null);
         tv.setMaxLines(mAddMsgEllipsized ? getEllipsizedLines() : MAX_ADD_MSG_LINES);
 
-        ImageView iv = (ImageView) findViewById(R.id.add_msg_expander);
-        iv.setImageResource(mAddMsgEllipsized ?
+        mAddMsgExpander.setImageResource(mAddMsgEllipsized ?
             com.android.internal.R.drawable.expander_ic_minimized :
             com.android.internal.R.drawable.expander_ic_maximized);
     }
diff --git a/src/com/android/settings/DeviceAdminSettings.java b/src/com/android/settings/DeviceAdminSettings.java
index c3c74b6..310aae7 100644
--- a/src/com/android/settings/DeviceAdminSettings.java
+++ b/src/com/android/settings/DeviceAdminSettings.java
@@ -16,25 +16,21 @@
 
 package com.android.settings;
 
+import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
 
 import android.app.Activity;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.app.ListActivity;
+import android.app.ListFragment;
 import android.app.admin.DeviceAdminInfo;
 import android.app.admin.DeviceAdminReceiver;
 import android.app.admin.DevicePolicyManager;
 import android.content.ComponentName;
 import android.content.Context;
-import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.content.res.Resources;
 import android.os.Bundle;
-import android.os.Handler;
-import android.os.RemoteCallback;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -50,7 +46,7 @@
 import java.util.HashSet;
 import java.util.List;
 
-public class DeviceAdminSettings extends ListActivity {
+public class DeviceAdminSettings extends ListFragment {
     static final String TAG = "DeviceAdminSettings";
     
     static final int DIALOG_WARNING = 1;
@@ -58,18 +54,21 @@
     DevicePolicyManager mDPM;
     final HashSet<ComponentName> mActiveAdmins = new HashSet<ComponentName>();
     final ArrayList<DeviceAdminInfo> mAvailableAdmins = new ArrayList<DeviceAdminInfo>();
-    
-    @Override
-    protected void onCreate(Bundle icicle) {
-        super.onCreate(icicle);
 
-        mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
-        
-        setContentView(R.layout.device_admin_settings);
-    }
-    
     @Override
-    protected void onResume() {
+    public void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+            Bundle savedInstanceState) {
+        mDPM = (DevicePolicyManager) getActivity().getSystemService(Context.DEVICE_POLICY_SERVICE);
+        return inflater.inflate(R.layout.device_admin_settings, container, false);
+    }
+
+    @Override
+    public void onResume() {
         super.onResume();
         updateList();
     }
@@ -82,16 +81,16 @@
                 mActiveAdmins.add(cur.get(i));
             }
         }
-        
+
         mAvailableAdmins.clear();
-        List<ResolveInfo> avail = getPackageManager().queryBroadcastReceivers(
+        List<ResolveInfo> avail = getActivity().getPackageManager().queryBroadcastReceivers(
                 new Intent(DeviceAdminReceiver.ACTION_DEVICE_ADMIN_ENABLED),
                 PackageManager.GET_META_DATA);
         int count = avail == null ? 0 : avail.size();
         for (int i=0; i<count; i++) {
             ResolveInfo ri = avail.get(i);
             try {
-                DeviceAdminInfo dpi = new DeviceAdminInfo(this, ri);
+                DeviceAdminInfo dpi = new DeviceAdminInfo(getActivity(), ri);
                 if (dpi.isVisible() || mActiveAdmins.contains(dpi.getComponent())) {
                     mAvailableAdmins.add(dpi);
                 }
@@ -104,16 +103,16 @@
         
         getListView().setAdapter(new PolicyListAdapter());
     }
-    
+
     @Override
-    protected void onListItemClick(ListView l, View v, int position, long id) {
+    public void onListItemClick(ListView l, View v, int position, long id) {
         DeviceAdminInfo dpi = (DeviceAdminInfo)l.getAdapter().getItem(position);
         Intent intent = new Intent();
-        intent.setClass(this, DeviceAdminAdd.class);
+        intent.setClass(getActivity(), DeviceAdminAdd.class);
         intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, dpi.getComponent());
         startActivity(intent);
     }
-    
+
     static class ViewHolder {
         ImageView icon;
         TextView name;
@@ -125,7 +124,8 @@
         final LayoutInflater mInflater;
         
         PolicyListAdapter() {
-            mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+            mInflater = (LayoutInflater)
+                    getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
         }
 
         public boolean hasStableIds() {
@@ -175,13 +175,14 @@
         }
         
         public void bindView(View view, int position) {
+            final Activity activity = getActivity();
             ViewHolder vh = (ViewHolder) view.getTag();
             DeviceAdminInfo item = mAvailableAdmins.get(position);
-            vh.icon.setImageDrawable(item.loadIcon(getPackageManager()));
-            vh.name.setText(item.loadLabel(getPackageManager()));
+            vh.icon.setImageDrawable(item.loadIcon(activity.getPackageManager()));
+            vh.name.setText(item.loadLabel(activity.getPackageManager()));
             vh.checkbox.setChecked(mActiveAdmins.contains(item.getComponent()));
             try {
-                vh.description.setText(item.loadDescription(getPackageManager()));
+                vh.description.setText(item.loadDescription(activity.getPackageManager()));
             } catch (Resources.NotFoundException e) {
             }
         }
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index 1e54504..2532747 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -333,4 +333,5 @@
     public static class AccountSyncSettingsActivity extends Settings { }
     public static class AccountSyncSettingsInAddAccountActivity extends Settings { }
     public static class CryptKeeperSettingsActivity extends Settings { }
+    public static class DeviceAdminSettingsActivity extends Settings { }
 }
