diff --git a/src/com/android/contacts/ContactsDrawerActivity.java b/src/com/android/contacts/ContactsDrawerActivity.java
index 81c7252..5f0dc2b 100644
--- a/src/com/android/contacts/ContactsDrawerActivity.java
+++ b/src/com/android/contacts/ContactsDrawerActivity.java
@@ -285,7 +285,8 @@
                         mToggle.runWhenIdle(new Runnable() {
                             @Override
                             public void run() {
-                                onGroupMenuItemClicked(groupListItem.getGroupId());
+                                onGroupMenuItemClicked(groupListItem.getGroupId(),
+                                        groupListItem.getTitle());
                             }
                         });
                         mDrawer.closeDrawer(GravityCompat.START);
@@ -340,8 +341,8 @@
         return null;
     }
 
-    protected void onGroupMenuItemClicked(long groupId) {
-        startActivity(GroupUtil.createViewGroupIntent(this, groupId));
+    protected void onGroupMenuItemClicked(long groupId, String title) {
+        startActivity(GroupUtil.createViewGroupIntent(this, groupId, title));
         if (shouldFinish()) {
             finish();
         }
diff --git a/src/com/android/contacts/activities/GroupMembersActivity.java b/src/com/android/contacts/activities/GroupMembersActivity.java
index 1511849..a525460 100644
--- a/src/com/android/contacts/activities/GroupMembersActivity.java
+++ b/src/com/android/contacts/activities/GroupMembersActivity.java
@@ -48,6 +48,7 @@
 import com.android.contacts.group.GroupMembersFragment;
 import com.android.contacts.group.GroupMetadata;
 import com.android.contacts.group.GroupNameEditDialogFragment;
+import com.android.contacts.group.GroupUtil;
 import com.android.contacts.interactions.GroupDeletionDialogFragment;
 import com.android.contacts.list.ContactsRequest;
 import com.android.contacts.list.MultiSelectContactsListFragment;
@@ -218,7 +219,7 @@
 
         // Avoid showing default "Contacts" title before group metadata is loaded. The title will
         // be changed to group name when onGroupMetadataLoaded() is called.
-        setActionBarTitle("");
+        setActionBarTitle(getIntent().getStringExtra(GroupUtil.EXTRA_GROUP_NAME));
 
         // Decide whether to prompt for the account and group name or start loading existing members
         if (mIsInsertAction) {
@@ -356,9 +357,9 @@
     }
 
     @Override
-    protected void onGroupMenuItemClicked(long groupId) {
+    protected void onGroupMenuItemClicked(long groupId, String title) {
         if (mGroupMetadata.groupId != groupId) {
-            super.onGroupMenuItemClicked(groupId);
+            super.onGroupMenuItemClicked(groupId, title);
         }
     }
 
diff --git a/src/com/android/contacts/group/GroupUtil.java b/src/com/android/contacts/group/GroupUtil.java
index e716fc7..a031106 100644
--- a/src/com/android/contacts/group/GroupUtil.java
+++ b/src/com/android/contacts/group/GroupUtil.java
@@ -53,6 +53,8 @@
     private static final Set<String> FFC_GROUPS =
             new HashSet(Arrays.asList("Friends", "Family", "Coworkers"));
 
+    public static final String EXTRA_GROUP_NAME = "groupName";
+
     private GroupUtil() {
     }
 
@@ -118,10 +120,11 @@
     }
 
     /** Returns an Intent to view the details of the group identified by the given ID. */
-    public static Intent createViewGroupIntent(Context context, long groupId) {
+    public static Intent createViewGroupIntent(Context context, long groupId, String title) {
         final Intent intent = new Intent(context, GroupMembersActivity.class);
         intent.setAction(Intent.ACTION_VIEW);
         intent.setData(ContentUris.withAppendedId(Groups.CONTENT_URI, groupId));
+        intent.putExtra(EXTRA_GROUP_NAME, title);
         return intent;
     }
 
