diff --git a/res/layout/icc_lock_tabs.xml b/res/layout/icc_lock_tabs.xml
index d2a4acc..79b9660 100644
--- a/res/layout/icc_lock_tabs.xml
+++ b/res/layout/icc_lock_tabs.xml
@@ -46,8 +46,8 @@
             android:layout_width="0dip"
             android:layout_height="0dip" />
 
-        <ListView
-            android:id="@android:id/list"
+        <FrameLayout
+            android:id="@+id/main_content"
             android:layout_width="match_parent"
             android:layout_height="0dip"
             android:layout_weight="1"
diff --git a/src/com/android/settings/EditPinPreference.java b/src/com/android/settings/EditPinPreference.java
index e53a2bf..fdad0a1 100644
--- a/src/com/android/settings/EditPinPreference.java
+++ b/src/com/android/settings/EditPinPreference.java
@@ -50,7 +50,7 @@
     protected void onBindDialogView(View view) {
         super.onBindDialogView(view);
 
-        final EditText editText = getEditText();
+        final EditText editText = (EditText) view.findViewById(android.R.id.edit);
 
         if (editText != null) {
             editText.setInputType(InputType.TYPE_CLASS_NUMBER |
diff --git a/src/com/android/settings/IccLockSettings.java b/src/com/android/settings/IccLockSettings.java
index 1a9784b..25d4fb1 100644
--- a/src/com/android/settings/IccLockSettings.java
+++ b/src/com/android/settings/IccLockSettings.java
@@ -27,7 +27,6 @@
 import android.os.Message;
 import android.support.v14.preference.SwitchPreference;
 import android.support.v7.preference.Preference;
-import android.support.v7.preference.PreferenceScreen;
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
@@ -40,7 +39,6 @@
 import android.widget.TabHost.TabSpec;
 import android.widget.TabWidget;
 import android.widget.Toast;
-
 import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.PhoneFactory;
@@ -340,6 +338,7 @@
         mPinDialog.setDialogMessage(message);
     }
 
+    @Override
     public void onPinEntered(EditPinPreference preference, boolean positiveResult) {
         if (!positiveResult) {
             resetDialogState();
@@ -384,7 +383,8 @@
         }
     }
 
-    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
+    @Override
+    public boolean onPreferenceTreeClick(Preference preference) {
         if (preference == mPinToggle) {
             // Get the new, preferred state
             mToState = mPinToggle.isChecked();
diff --git a/src/com/android/settings/InstrumentedFragment.java b/src/com/android/settings/InstrumentedFragment.java
index b4fb818..0e3528a 100644
--- a/src/com/android/settings/InstrumentedFragment.java
+++ b/src/com/android/settings/InstrumentedFragment.java
@@ -28,6 +28,9 @@
     // Declare new temporary categories here, starting after this value.
     public static final int UNDECLARED = 100000;
 
+    // Used by PreferenceActivity for the dummy fragment it adds, no useful data here.
+    public static final int PREFERENCE_ACTIVITY_FRAGMENT = UNDECLARED + 1;
+
     /**
      * Declare the view of this category.
      *
diff --git a/src/com/android/settings/PreferenceActivity.java b/src/com/android/settings/PreferenceActivity.java
index dc3689c..31b5f1f 100644
--- a/src/com/android/settings/PreferenceActivity.java
+++ b/src/com/android/settings/PreferenceActivity.java
@@ -17,7 +17,6 @@
 
 import android.annotation.Nullable;
 import android.os.Bundle;
-import android.support.v14.preference.PreferenceFragment;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceScreen;
 
@@ -57,7 +56,7 @@
                 || PreferenceActivityFragment.class.getName().equals(fragmentName);
     }
 
-    public static class PreferenceActivityFragment extends PreferenceFragment {
+    public static class PreferenceActivityFragment extends SettingsPreferenceFragment {
         @Override
         public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
             ((PreferenceActivity) getActivity()).mFragment = this;
@@ -70,6 +69,14 @@
             }
             return super.onPreferenceTreeClick(preference);
         }
+
+        @Override
+        protected int getMetricsCategory() {
+            if (getActivity() instanceof InstrumentedPreferenceActivity) {
+                return ((InstrumentedPreferenceActivity) getActivity()).getMetricsCategory();
+            }
+            return InstrumentedFragment.PREFERENCE_ACTIVITY_FRAGMENT;
+        }
     }
 
 }
