Resolving issue with the wrong contact displayed in search results.
Bug: 3172505
Change-Id: I9740429306949162a07044aecfd282d14e14f839
diff --git a/src/com/android/contacts/activities/ContactBrowserActivity.java b/src/com/android/contacts/activities/ContactBrowserActivity.java
index e970688..af8528c 100644
--- a/src/com/android/contacts/activities/ContactBrowserActivity.java
+++ b/src/com/android/contacts/activities/ContactBrowserActivity.java
@@ -259,6 +259,7 @@
}
mListFragment.setSelectedContactUri(uri);
+ mListFragment.saveSelectedUri(mPrefs);
mListFragment.requestSelectionOnScreen(true);
if (mContactContentDisplayed) {
setupContactDetailFragment(uri);
@@ -333,7 +334,7 @@
if (mSearchMode) {
mListFragment = createContactSearchFragment();
// When switching to the search mode, erase previous state of the search UI
- mListFragment.saveSelectedUri(mPrefs);
+ mListFragment.eraseSelectedUri(mPrefs);
} else {
mListFragment = createListFragment(ContactsRequest.ACTION_DEFAULT);
mListFragment.requestSelectionOnScreen(false);
@@ -344,10 +345,11 @@
mListFragment.setQueryString(mActionBarAdapter.getQueryString());
}
- if (fromRequest) {
+ if (fromRequest && !mSearchMode) {
Uri selectUri = mRequest.getContactUri();
if (selectUri != null) {
mListFragment.setSelectedContactUri(selectUri);
+ mListFragment.saveSelectedUri(mPrefs);
mListFragment.requestSelectionOnScreen(false);
}
}
@@ -449,6 +451,7 @@
requestedContactUri = mListFragment.getFirstContactUri();
if (requestedContactUri != null) {
mListFragment.setSelectedContactUri(requestedContactUri);
+ mListFragment.eraseSelectedUri(mPrefs);
mListFragment.requestSelectionOnScreen(false);
}
}
@@ -485,6 +488,8 @@
}
mListFragment.setSelectedContactUri(selectedUri);
+ mListFragment.eraseSelectedUri(mPrefs);
+ mListFragment.requestSelectionOnScreen(true);
if (mContactContentDisplayed) {
setupContactDetailFragment(selectedUri);
}
diff --git a/src/com/android/contacts/list/ContactBrowseListFragment.java b/src/com/android/contacts/list/ContactBrowseListFragment.java
index 65c61a6..8f1efc5 100644
--- a/src/com/android/contacts/list/ContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/ContactBrowseListFragment.java
@@ -336,4 +336,7 @@
public void restoreSelectedUri(SharedPreferences preferences) {
}
+
+ public void eraseSelectedUri(SharedPreferences preferences) {
+ }
}
diff --git a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
index 919c740..68f0607 100644
--- a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
@@ -191,13 +191,20 @@
@Override
public void saveSelectedUri(SharedPreferences preferences) {
- Editor editor = preferences.edit();
Uri uri = getSelectedContactUri();
if (uri == null) {
- editor.remove(getPersistentSelectionKey());
+ eraseSelectedUri(preferences);
} else {
+ Editor editor = preferences.edit();
editor.putString(getPersistentSelectionKey(), uri.toString());
+ editor.apply();
}
+ }
+
+ @Override
+ public void eraseSelectedUri(SharedPreferences preferences) {
+ Editor editor = preferences.edit();
+ editor.remove(getPersistentSelectionKey());
editor.apply();
}