Fix bug #13813608 Launcher back button does not take you to previous...

... settings after orientation change

- gasp, there were some issues in the way we were tracking if
a search result fragment was opened. Simplified that code.

Change-Id: I7f8efb3a5aab1a275193f7de15ac50ca33bdad16
This commit is contained in:
Fabrice Di Meglio
2014-04-04 14:48:05 -07:00
parent 7f111811e0
commit bb16fd836a

View File

@@ -306,7 +306,6 @@ public class SettingsActivity extends Activity
private SearchView mSearchView; private SearchView mSearchView;
private MenuItem mSearchMenuItem; private MenuItem mSearchMenuItem;
private boolean mSearchMenuItemExpanded = false; private boolean mSearchMenuItemExpanded = false;
private boolean mIsShowingSearchResults = false;
private SearchResultsSummary mSearchResultsFragment; private SearchResultsSummary mSearchResultsFragment;
private String mSearchQuery; private String mSearchQuery;
@@ -1257,17 +1256,15 @@ public class SettingsActivity extends Activity
@Override @Override
public boolean onMenuItemActionExpand(MenuItem item) { public boolean onMenuItemActionExpand(MenuItem item) {
if (item.getItemId() == mSearchMenuItem.getItemId()) { if (item.getItemId() == mSearchMenuItem.getItemId()) {
if (mSearchResultsFragment == null) {
switchToSearchResultsFragmentIfNeeded(); switchToSearchResultsFragmentIfNeeded();
} }
}
return true; return true;
} }
@Override @Override
public boolean onMenuItemActionCollapse(MenuItem item) { public boolean onMenuItemActionCollapse(MenuItem item) {
if (item.getItemId() == mSearchMenuItem.getItemId()) { if (item.getItemId() == mSearchMenuItem.getItemId()) {
if (mIsShowingSearchResults) { if (mSearchMenuItemExpanded) {
revertToInitialFragment(); revertToInitialFragment();
} }
} }
@@ -1275,7 +1272,9 @@ public class SettingsActivity extends Activity
} }
private void switchToSearchResultsFragmentIfNeeded() { private void switchToSearchResultsFragmentIfNeeded() {
if (!mIsShowingSearchResults) { if (mSearchResultsFragment != null) {
return;
}
Fragment current = getFragmentManager().findFragmentById(R.id.prefs); Fragment current = getFragmentManager().findFragmentById(R.id.prefs);
if (current != null && current instanceof SearchResultsSummary) { if (current != null && current instanceof SearchResultsSummary) {
mSearchResultsFragment = (SearchResultsSummary) current; mSearchResultsFragment = (SearchResultsSummary) current;
@@ -1284,8 +1283,7 @@ public class SettingsActivity extends Activity
mSearchResultsFragment = (SearchResultsSummary) switchToFragment( mSearchResultsFragment = (SearchResultsSummary) switchToFragment(
SearchResultsSummary.class.getName(), null, false, true, title, true); SearchResultsSummary.class.getName(), null, false, true, title, true);
} }
mIsShowingSearchResults = true; mSearchMenuItemExpanded = true;
}
} }
public void needToRevertToInitialFragment() { public void needToRevertToInitialFragment() {
@@ -1294,10 +1292,10 @@ public class SettingsActivity extends Activity
private void revertToInitialFragment() { private void revertToInitialFragment() {
mNeedToRevertToInitialFragment = false; mNeedToRevertToInitialFragment = false;
getFragmentManager().popBackStack(SettingsActivity.BACK_STACK_PREFS,
FragmentManager.POP_BACK_STACK_INCLUSIVE);
mSearchResultsFragment = null; mSearchResultsFragment = null;
mIsShowingSearchResults = false; mSearchMenuItemExpanded = false;
getFragmentManager().popBackStackImmediate(SettingsActivity.BACK_STACK_PREFS,
FragmentManager.POP_BACK_STACK_INCLUSIVE);
mSearchMenuItem.collapseActionView(); mSearchMenuItem.collapseActionView();
} }
} }