Fix "Tab not maintained on rotation"
Change-Id: I331794c948dab876c808ba1274cb11dbdb70155d
diff --git a/src/com/android/contacts/activities/ActionBarAdapter.java b/src/com/android/contacts/activities/ActionBarAdapter.java
index 30e445e..073f665 100644
--- a/src/com/android/contacts/activities/ActionBarAdapter.java
+++ b/src/com/android/contacts/activities/ActionBarAdapter.java
@@ -49,6 +49,7 @@
private static final String EXTRA_KEY_SEARCH_MODE = "navBar.searchMode";
private static final String EXTRA_KEY_QUERY = "navBar.query";
+ private static final String EXTRA_KEY_SELECTED_TAB = "navBar.selectedTab";
private boolean mSearchMode;
private String mQueryString;
@@ -213,11 +214,13 @@
public void onSaveInstanceState(Bundle outState) {
outState.putBoolean(EXTRA_KEY_SEARCH_MODE, mSearchMode);
outState.putString(EXTRA_KEY_QUERY, mQueryString);
+ outState.putInt(EXTRA_KEY_SELECTED_TAB, mActionBar.getSelectedNavigationIndex());
}
public void onRestoreInstanceState(Bundle savedState) {
mSearchMode = savedState.getBoolean(EXTRA_KEY_SEARCH_MODE);
mQueryString = savedState.getString(EXTRA_KEY_QUERY);
+ mActionBar.setSelectedNavigationItem(savedState.getInt(EXTRA_KEY_SELECTED_TAB));
}
@Override
diff --git a/src/com/android/contacts/group/GroupBrowseListFragment.java b/src/com/android/contacts/group/GroupBrowseListFragment.java
index 95a85b6..59b0cec 100644
--- a/src/com/android/contacts/group/GroupBrowseListFragment.java
+++ b/src/com/android/contacts/group/GroupBrowseListFragment.java
@@ -33,6 +33,7 @@
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract.Groups;
+import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
@@ -77,6 +78,8 @@
private boolean mSelectionToScreenRequested;
+ private static final String EXTRA_KEY_GROUP_URI = "groups.groupUri";
+
/**
* Map of account name to a list of {@link GroupMetaData} objects
* representing groups within that account.
@@ -108,6 +111,13 @@
mListView.setOnFocusChangeListener(this);
mListView.setOnTouchListener(this);
mEmptyView = mRootView.findViewById(R.id.empty);
+
+ if (savedInstanceState != null) {
+ String groupUriString = savedInstanceState.getString(EXTRA_KEY_GROUP_URI);
+ if (groupUriString != null) {
+ mSelectedGroupUri = Uri.parse(groupUriString);
+ }
+ }
return mRootView;
}
@@ -230,6 +240,10 @@
if (mSelectionToScreenRequested) {
requestSelectionToScreen();
}
+
+ if (mSelectionVisible && mSelectedGroupUri != null) {
+ viewGroup(mSelectedGroupUri);
+ }
}
public void setListener(OnGroupBrowserActionListener listener) {
@@ -293,4 +307,15 @@
}
return false;
}
+
+ @Override
+ public void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ if (mSelectedGroupUri != null) {
+ String uriString = mSelectedGroupUri.toString();
+ if (!TextUtils.isEmpty(uriString)) {
+ outState.putString(EXTRA_KEY_GROUP_URI, uriString);
+ }
+ }
+ }
}