diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 768f18e..b26a52f 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -445,6 +445,11 @@
     }
 
     @Override
+    public void onMultiWindowModeChanged(boolean entering) {
+        initializeHomeVisibility();
+    }
+
+    @Override
     protected void onResume() {
         super.onResume();
 
@@ -464,6 +469,7 @@
             onSyncStateUpdated();
         }
         initializeFabVisibility();
+        initializeHomeVisibility();
 
         mSaveServiceListener = new SaveServiceListener();
         LocalBroadcastManager.getInstance(this).registerReceiver(mSaveServiceListener,
@@ -483,6 +489,15 @@
         wasLastFabAnimationScaleIn = !shouldHideFab();
     }
 
+    private void initializeHomeVisibility() {
+        // Remove the navigation icon if we return to the fragment in a search or select state
+        if (getToolbar() != null && (isAllFragmentInSelectionMode()
+                || isAllFragmentInSearchMode() || isGroupsFragmentInSelectionMode()
+                || isGroupsFragmentInSearchMode())) {
+            getToolbar().setNavigationIcon(null);
+        }
+    }
+
     private boolean shouldHideFab() {
         if (mAllFragment != null && mAllFragment.getActionBarAdapter() == null
                 || isInSecondLevel()) {
@@ -698,15 +713,25 @@
     }
 
     private boolean isAllFragmentInSelectionMode() {
-        return mAllFragment.getActionBarAdapter() != null
+        return mAllFragment != null && mAllFragment.getActionBarAdapter() != null
                 && mAllFragment.getActionBarAdapter().isSelectionMode();
     }
 
     private boolean isAllFragmentInSearchMode() {
-        return mAllFragment.getActionBarAdapter() != null
+        return mAllFragment != null && mAllFragment.getActionBarAdapter() != null
                 && mAllFragment.getActionBarAdapter().isSearchMode();
     }
 
+    private boolean isGroupsFragmentInSelectionMode() {
+        return mMembersFragment != null && mMembersFragment.getActionBarAdapter() != null
+                && mMembersFragment.getActionBarAdapter().isSelectionMode();
+    }
+
+    private boolean isGroupsFragmentInSearchMode() {
+        return mMembersFragment != null && mMembersFragment.getActionBarAdapter() != null
+                && mMembersFragment.getActionBarAdapter().isSearchMode();
+    }
+
     @Override
     protected void onSaveInstanceState(Bundle outState) {
         super.onSaveInstanceState(outState);
