Wait with finishing until fingerprints are removed

Bug: 22863210
Change-Id: I490157cc2f9b52ac87cc52e13c7eb57cb4a4a377
diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java
index 1015a45..167a381 100644
--- a/src/com/android/settings/ChooseLockGeneric.java
+++ b/src/com/android/settings/ChooseLockGeneric.java
@@ -109,11 +109,18 @@
             @Override
             public void onRemovalSucceeded(Fingerprint fingerprint) {
                 Log.v(TAG, "Fingerprint removed: " + fingerprint.getFingerId());
+                if (mFingerprintManager.getEnrolledFingerprints().size() == 0) {
+                    finish();
+                }
             }
 
             @Override
             public void onRemovalError(Fingerprint fp, int errMsgId, CharSequence errString) {
-                Toast.makeText(getActivity(), errString, Toast.LENGTH_SHORT);
+                Activity activity = getActivity();
+                if (activity != null) {
+                    Toast.makeText(getActivity(), errString, Toast.LENGTH_SHORT);
+                }
+                finish();
             }
         };
 
@@ -490,18 +497,18 @@
                 mChooseLockSettingsHelper.utils().clearLock(UserHandle.myUserId());
                 mChooseLockSettingsHelper.utils().setLockScreenDisabled(disabled,
                         UserHandle.myUserId());
-                removeAllFingerprintTemplates();
+                removeAllFingerprintTemplatesAndFinish();
                 getActivity().setResult(Activity.RESULT_OK);
-                finish();
             } else {
-                removeAllFingerprintTemplates();
-                finish();
+                removeAllFingerprintTemplatesAndFinish();
             }
         }
 
-        private void removeAllFingerprintTemplates() {
+        private void removeAllFingerprintTemplatesAndFinish() {
             if (mFingerprintManager != null && mFingerprintManager.isHardwareDetected()) {
                 mFingerprintManager.remove(new Fingerprint(null, 0, 0, 0), mRemovalCallback);
+            } else {
+                finish();
             }
         }
 
diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java
index baf04d4..b957c38 100644
--- a/src/com/android/settings/SettingsPreferenceFragment.java
+++ b/src/com/android/settings/SettingsPreferenceFragment.java
@@ -505,7 +505,10 @@
     }
 
     public void finish() {
-        getActivity().onBackPressed();
+        Activity activity = getActivity();
+        if (activity != null) {
+            activity.onBackPressed();
+        }
     }
 
     public boolean startFragment(Fragment caller, String fragmentClass, int titleRes,