diff --git a/src/com/android/settings/password/BiometricFragment.java b/src/com/android/settings/password/BiometricFragment.java
index 7666a36..e4c08e7 100644
--- a/src/com/android/settings/password/BiometricFragment.java
+++ b/src/com/android/settings/password/BiometricFragment.java
@@ -47,7 +47,6 @@
     private int mUserId;
 
     // Created/Initialized once and retained
-    private PromptInfo mPromptInfo;
     private BiometricPrompt mBiometricPrompt;
     private CancellationSignal mCancellationSignal;
 
@@ -127,7 +126,7 @@
         final Bundle bundle = getArguments();
         final PromptInfo promptInfo = bundle.getParcelable(KEY_PROMPT_INFO);
 
-        final BiometricPrompt.Builder builder = new BiometricPrompt.Builder(getContext())
+        mBiometricPrompt = new BiometricPrompt.Builder(getContext())
                 .setTitle(promptInfo.getTitle())
                 .setUseDefaultTitle() // use default title if title is null/empty
                 .setDeviceCredentialAllowed(true)
@@ -140,13 +139,19 @@
                 .setConfirmationRequired(promptInfo.isConfirmationRequested())
                 .setDisallowBiometricsIfPolicyExists(
                         promptInfo.isDisallowBiometricsIfPolicyExists())
-                .setReceiveSystemEvents(true);
+                .setReceiveSystemEvents(true)
+                .build();
+    }
 
-        mBiometricPrompt = builder.build();
-        mCancellationSignal = new CancellationSignal();
+    @Override
+    public void onResume() {
+        super.onResume();
 
-        mBiometricPrompt.authenticateUser(mCancellationSignal, mClientExecutor,
-                mAuthenticationCallback, mUserId);
+        if (mCancellationSignal == null) {
+            mCancellationSignal = new CancellationSignal();
+            mBiometricPrompt.authenticateUser(mCancellationSignal, mClientExecutor,
+                    mAuthenticationCallback, mUserId);
+        }
     }
 
     @Override
@@ -154,4 +159,3 @@
         return SettingsEnums.BIOMETRIC_FRAGMENT;
     }
 }
-
diff --git a/src/com/android/settings/password/ConfirmDeviceCredentialActivity.java b/src/com/android/settings/password/ConfirmDeviceCredentialActivity.java
index 6241cc9..03e83a4 100644
--- a/src/com/android/settings/password/ConfirmDeviceCredentialActivity.java
+++ b/src/com/android/settings/password/ConfirmDeviceCredentialActivity.java
@@ -150,17 +150,6 @@
         }
     };
 
-    private String getStringForError(int errorCode) {
-        switch (errorCode) {
-            case BiometricConstants.BIOMETRIC_ERROR_USER_CANCELED:
-                return getString(com.android.internal.R.string.biometric_error_user_canceled);
-            case BiometricConstants.BIOMETRIC_ERROR_CANCELED:
-                return getString(com.android.internal.R.string.biometric_error_canceled);
-            default:
-                return null;
-        }
-    }
-
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
