Prevent going into single contact mode un-necessarily.
On a tablet, after creating a new contact, the contact list would enter
"single contact mode". This mode is intended for the case where you may
have an account filte set and you want to see a contact in a different
account. Combined with a stale contact list, this caused the app to
go into single mode when it was not necessary.
This will fix the most common case where all accounts are shown and a
new contact is added. The new contact will be displayed in the normal list.
This will not fix the case where an account filter is active and a new
contact is created. In this case, the new contact is still displayed in
single contact mode.
Also tested was the test cases in:
I233162572e25acb737c9eae787dfc146879a0dc2
Bug: 7621855
Change-Id: I6f323c4003677cec9db63cae347f4532071037b9
diff --git a/src/com/android/contacts/list/ContactBrowseListFragment.java b/src/com/android/contacts/list/ContactBrowseListFragment.java
index 3e8e4a3..09b6d42 100644
--- a/src/com/android/contacts/list/ContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/ContactBrowseListFragment.java
@@ -490,8 +490,15 @@
mSelectionRequired = false;
// If we were looking at a different specific contact, just reload
+ // FILTER_TYPE_ALL_ACCOUNTS is needed for the case where a new contact is added
+ // on a tablet and the loader is returning a stale list. In this case, the contact
+ // will not be found until the next load. b/7621855 This will only fix the most
+ // common case where all accounts are shown. It will not fix the one account case.
+ // TODO: we may want to add more FILTER_TYPEs or relax this check to fix all other
+ // FILTER_TYPE cases.
if (mFilter != null
- && mFilter.filterType == ContactListFilter.FILTER_TYPE_SINGLE_CONTACT) {
+ && (mFilter.filterType == ContactListFilter.FILTER_TYPE_SINGLE_CONTACT
+ || mFilter.filterType == ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS)) {
reloadData();
} else {
// Otherwise, call the listener, which will adjust the filter.