Fixed issues with the handling of a null contact

Bug: 3215879
Bug: 3203553
Change-Id: Icc3f588dff88c375ab72b4d55b4a74ea311cf885
diff --git a/src/com/android/contacts/views/ContactLoader.java b/src/com/android/contacts/views/ContactLoader.java
index 85ca803..b3001a2 100644
--- a/src/com/android/contacts/views/ContactLoader.java
+++ b/src/com/android/contacts/views/ContactLoader.java
@@ -956,6 +956,10 @@
         mLoadGroupMetaData = loadGroupMetaData;
     }
 
+    public Uri getLookupUri() {
+        return mLookupUri;
+    }
+
     @Override
     public void startLoading() {
         if (mContact != null) {
diff --git a/src/com/android/contacts/views/detail/ContactDetailFragment.java b/src/com/android/contacts/views/detail/ContactDetailFragment.java
index eb5c65c..9fdb59e 100644
--- a/src/com/android/contacts/views/detail/ContactDetailFragment.java
+++ b/src/com/android/contacts/views/detail/ContactDetailFragment.java
@@ -271,6 +271,7 @@
         mTransitionAnimationRequested = mContactDataDisplayed;
         mContactDataDisplayed = true;
         if (mLookupUri == null) {
+            getLoaderManager().stopLoader(LOADER_DETAILS);
             mContactData = null;
             bindData();
         } else if (getActivity() != null) {
@@ -1245,14 +1246,18 @@
 
         @Override
         public void onLoadFinished(Loader<ContactLoader.Result> loader, ContactLoader.Result data) {
-            if (data == ContactLoader.Result.NOT_FOUND || data == ContactLoader.Result.ERROR) {
-                // Item has been deleted
-                Log.i(TAG, "No contact found. Closing activity");
-                if (mListener != null) mListener.onContactNotFound();
-                return;
+            if (data != ContactLoader.Result.NOT_FOUND && data != ContactLoader.Result.ERROR) {
+                mContactData = data;
+            } else {
+                Log.i(TAG, "No contact found: " + ((ContactLoader)loader).getLookupUri());
+                mContactData = null;
             }
-            mContactData = data;
+
             bindData();
+
+            if (mContactData == null && mListener != null) {
+                mListener.onContactNotFound();
+            }
         }
     };