diff --git a/src/com/android/contacts/activities/ContactBrowserActivity.java b/src/com/android/contacts/activities/ContactBrowserActivity.java
index 4f1f353..c202615 100644
--- a/src/com/android/contacts/activities/ContactBrowserActivity.java
+++ b/src/com/android/contacts/activities/ContactBrowserActivity.java
@@ -238,7 +238,7 @@
                 configureFragments(false /* from request */);
             }
 
-            mListFragment.setSelectedContactUri(uri);
+            mListFragment.reloadDataAndSetSelectedUri(uri);
         }
     }
 
@@ -609,8 +609,8 @@
         public void onInvalidSelection() {
             ContactListFilter filter =
                     new ContactListFilter(ContactListFilter.FILTER_TYPE_SINGLE_CONTACT);
+            mListFragment.setFilter(filter, false);
             mContactListFilterController.setContactListFilter(filter, true);
-            mListFragment.setFilter(filter);
         }
     }
 
@@ -945,7 +945,7 @@
             case SUBACTIVITY_NEW_CONTACT: {
                 if (resultCode == RESULT_OK) {
                     mRequest.setActionCode(ContactsRequest.ACTION_VIEW_CONTACT);
-                    mListFragment.setSelectedContactUri(data.getData());
+                    mListFragment.reloadDataAndSetSelectedUri(data.getData());
                 }
                 break;
             }
diff --git a/src/com/android/contacts/detail/ContactDetailFragment.java b/src/com/android/contacts/detail/ContactDetailFragment.java
index 636f74c..82658a4 100644
--- a/src/com/android/contacts/detail/ContactDetailFragment.java
+++ b/src/com/android/contacts/detail/ContactDetailFragment.java
@@ -1182,6 +1182,10 @@
 
         @Override
         public void onLoadFinished(Loader<ContactLoader.Result> loader, ContactLoader.Result data) {
+            if (!((ContactLoader)loader).getLookupUri().equals(mLookupUri)) {
+                return;
+            }
+
             if (data != ContactLoader.Result.NOT_FOUND && data != ContactLoader.Result.ERROR) {
                 mContactData = data;
             } else {
@@ -1198,6 +1202,7 @@
 
         public void onLoaderReset(Loader<ContactLoader.Result> loader) {
             mContactData = null;
+            bindData();
         }
     };
 
diff --git a/src/com/android/contacts/list/ContactBrowseListFragment.java b/src/com/android/contacts/list/ContactBrowseListFragment.java
index 3d227cc..a53fce7 100644
--- a/src/com/android/contacts/list/ContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/ContactBrowseListFragment.java
@@ -124,7 +124,14 @@
                 return;
             }
 
-            onContactUriQueryFinished(Contacts.getLookupUri(contactId, lookupKey));
+            Uri uri;
+            if (contactId != 0 && lookupKey != null) {
+                uri = Contacts.getLookupUri(contactId, lookupKey);
+            } else {
+                uri = null;
+            }
+
+            onContactUriQueryFinished(uri);
         }
     }
 
@@ -160,6 +167,10 @@
     }
 
     public void setFilter(ContactListFilter filter) {
+        setFilter(filter, true);
+    }
+
+    public void setFilter(ContactListFilter filter, boolean restoreSelectedUri) {
         if (mFilter == null && filter == null) {
             return;
         }
@@ -172,8 +183,10 @@
 
         mFilter = filter;
         saveFilter();
-        mSelectedContactUri = null;
-        restoreSelectedUri(true);
+        if (restoreSelectedUri) {
+            mSelectedContactUri = null;
+            restoreSelectedUri(true);
+        }
         reloadData();
     }
 
@@ -494,6 +507,11 @@
         super.startLoading();
     }
 
+    public void reloadDataAndSetSelectedUri(Uri uri) {
+        setSelectedContactUri(uri, true, true, true, true);
+        reloadData();
+    }
+
     @Override
     public void reloadData() {
         if (mStartedLoading) {
