diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index a94258e..2618182 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -712,11 +712,9 @@
 
 
         <!-- Lock screen settings -->
-        <activity android:name="ConfirmLockPattern"
-            android:label="@string/lockpassword_confirm_your_pattern_header"/>
+        <activity android:name="ConfirmLockPattern"/>
 
-        <activity android:name="ConfirmLockPassword"
-            android:label="@string/lockpassword_confirm_your_password_header"/>>
+        <activity android:name="ConfirmLockPassword"/>
 
         <activity android:name="ChooseLockGeneric"
             android:label="@string/lockpassword_choose_lock_generic_header">
@@ -726,14 +724,11 @@
             </intent-filter>
         </activity>
 
-        <activity android:name="ChooseLockPattern" android:exported="false"
-            android:label="@string/lockpassword_choose_your_pattern_header"/>
+        <activity android:name="ChooseLockPattern" android:exported="false"/>
 
-        <activity android:name="ChooseLockPassword" android:exported="false"
-            android:label="@string/lockpassword_choose_your_password_header"/>
+        <activity android:name="ChooseLockPassword" android:exported="false"/>
 
-        <activity android:name="ChooseLockPatternTutorial"
-            android:label="@string/lockpassword_choose_your_pattern_header"/>
+        <activity android:name="ChooseLockPatternTutorial" android:exported="false"/>
 
         <!-- Runs in the phone process since it needs access to the Phone object -->
         <activity android:name=".deviceinfo.Status"
diff --git a/src/com/android/settings/ChooseLockPassword.java b/src/com/android/settings/ChooseLockPassword.java
index 98bd019..b8db82e 100644
--- a/src/com/android/settings/ChooseLockPassword.java
+++ b/src/com/android/settings/ChooseLockPassword.java
@@ -70,6 +70,8 @@
         //getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
                 //WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
         super.onCreate(savedInstanceState);
+        CharSequence msg = getText(R.string.lockpassword_choose_your_password_header);
+        showBreadCrumbs(msg, msg);
     }
 
     public static class ChooseLockPasswordFragment extends Fragment
diff --git a/src/com/android/settings/ChooseLockPattern.java b/src/com/android/settings/ChooseLockPattern.java
index 748b444..17d3de2 100644
--- a/src/com/android/settings/ChooseLockPattern.java
+++ b/src/com/android/settings/ChooseLockPattern.java
@@ -72,6 +72,8 @@
     public void onCreate(Bundle savedInstanceState) {
         // requestWindowFeature(Window.FEATURE_NO_TITLE);
         super.onCreate(savedInstanceState);
+        CharSequence msg = getText(R.string.lockpassword_choose_your_pattern_header);
+        showBreadCrumbs(msg, msg);
     }
 
     @Override
diff --git a/src/com/android/settings/ChooseLockPatternTutorial.java b/src/com/android/settings/ChooseLockPatternTutorial.java
index a96baa2..2e596df 100644
--- a/src/com/android/settings/ChooseLockPatternTutorial.java
+++ b/src/com/android/settings/ChooseLockPatternTutorial.java
@@ -44,6 +44,13 @@
         return modIntent;
     }
 
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        CharSequence msg = getText(R.string.lockpassword_choose_your_pattern_header);
+        showBreadCrumbs(msg, msg);
+    }
+
     public static class ChooseLockPatternTutorialFragment extends Fragment
             implements View.OnClickListener {
         private View mNextButton;
diff --git a/src/com/android/settings/ConfirmLockPassword.java b/src/com/android/settings/ConfirmLockPassword.java
index 08e99ea..5447ba8 100644
--- a/src/com/android/settings/ConfirmLockPassword.java
+++ b/src/com/android/settings/ConfirmLockPassword.java
@@ -53,6 +53,8 @@
         //getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
                 //WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
         super.onCreate(savedInstanceState);
+        CharSequence msg = getText(R.string.lockpassword_confirm_your_password_header);
+        showBreadCrumbs(msg, msg);
     }
 
     public static class ConfirmLockPasswordFragment extends Fragment implements OnClickListener,
diff --git a/src/com/android/settings/ConfirmLockPattern.java b/src/com/android/settings/ConfirmLockPattern.java
index 25e8370..0653d3f 100644
--- a/src/com/android/settings/ConfirmLockPattern.java
+++ b/src/com/android/settings/ConfirmLockPattern.java
@@ -62,6 +62,13 @@
     }
 
     @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        CharSequence msg = getText(R.string.lockpassword_confirm_your_pattern_header);
+        showBreadCrumbs(msg, msg);
+    }
+
+    @Override
     public Intent getIntent() {
         Intent modIntent = new Intent(super.getIntent());
         modIntent.putExtra(EXTRA_SHOW_FRAGMENT, ConfirmLockPatternFragment.class.getName());
