diff options
author | Fabrice Di Meglio <fdimeglio@google.com> | 2014-05-12 18:54:32 -0700 |
---|---|---|
committer | Fabrice Di Meglio <fdimeglio@google.com> | 2014-05-12 19:35:38 -0700 |
commit | 8c3b0ce7120da882082eed533462090c4feadff8 (patch) | |
tree | 04bc0d64c807e8fb3e3544e682390b37e8f5980a /src/com/android/settings/dashboard | |
parent | dfeb64df7d08ff3b56555751356dc32321904bcd (diff) | |
download | packages_apps_Settings-8c3b0ce7120da882082eed533462090c4feadff8.tar.gz packages_apps_Settings-8c3b0ce7120da882082eed533462090c4feadff8.tar.bz2 packages_apps_Settings-8c3b0ce7120da882082eed533462090c4feadff8.zip |
Fix bug #14323469 Settings crash on selecting keyword from recent searches
... after changing orientation
- set the SearchView for the SearchResultsFragment when the SearchView is
instantiated in the onCreateOptionsMenu(Menu)
- take care of the correct showing of the Recent Searched (suggestions)
Change-Id: Idfa17436d4a2436e0947ce1e1692355def3821a3
Diffstat (limited to 'src/com/android/settings/dashboard')
-rw-r--r-- | src/com/android/settings/dashboard/SearchResultsSummary.java | 41 |
1 files changed, 38 insertions, 3 deletions
diff --git a/src/com/android/settings/dashboard/SearchResultsSummary.java b/src/com/android/settings/dashboard/SearchResultsSummary.java index e8544aeb3..6a6431d70 100644 --- a/src/com/android/settings/dashboard/SearchResultsSummary.java +++ b/src/com/android/settings/dashboard/SearchResultsSummary.java @@ -51,6 +51,8 @@ public class SearchResultsSummary extends Fragment { private static final String EMPTY_QUERY = ""; private static char ELLIPSIS = '\u2026'; + private static final String SAVE_KEY_SHOW_ONLY_RESULTS = ":settings:show_only_results"; + private SearchView mSearchView; private ListView mResultsListView; @@ -66,6 +68,8 @@ public class SearchResultsSummary extends Fragment { private String mQuery; + private boolean mShowOnlyResults; + /** * A basic AsyncTask for updating the query results cursor */ @@ -110,6 +114,17 @@ public class SearchResultsSummary extends Fragment { mResultsAdapter = new SearchResultsAdapter(getActivity()); mSuggestionsAdapter = new SuggestionsAdapter(getActivity()); + + if (savedInstanceState != null) { + mShowOnlyResults = savedInstanceState.getBoolean(SAVE_KEY_SHOW_ONLY_RESULTS); + } + } + + @Override + public void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + + outState.putBoolean(SAVE_KEY_SHOW_ONLY_RESULTS, mShowOnlyResults); } @Override @@ -197,6 +212,7 @@ public class SearchResultsSummary extends Fragment { mQuery = cursor.getString(0); mSearchView.setQuery(mQuery, false); setSuggestionsVisibility(false); + mShowOnlyResults = true; } }); @@ -207,7 +223,9 @@ public class SearchResultsSummary extends Fragment { public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - showSomeSuggestions(); + if (!mShowOnlyResults) { + showSomeSuggestions(); + } } public void setSearchView(SearchView searchView) { @@ -232,13 +250,30 @@ public class SearchResultsSummary extends Fragment { public boolean onQueryTextSubmit(String query) { mQuery = getFilteredQueryString(query); + setSuggestionsVisibility(!mShowOnlyResults); updateSearchResults(); return true; } public boolean onQueryTextChange(String query) { - mQuery = getFilteredQueryString(query); - updateSuggestions(); + final String newQuery = getFilteredQueryString(query); + + boolean isNewQuery; + if (!TextUtils.isEmpty(mQuery)) { + isNewQuery = !mQuery.equals(query); + } else { + isNewQuery = !TextUtils.isEmpty(query); + } + + mQuery = newQuery; + + if (isNewQuery) { + mShowOnlyResults = false; + } + if (!mShowOnlyResults) { + updateSuggestions(); + } + updateSearchResults(); return true; } |