Set directory search mode earlier
* The cause of the crash is that in ag/1424283 we set directory search
mode in onResume in fragment (rather than before onStart), so loader
and adapter gets old directory search mode (0). Then it will invoke
DirectoryListLoader.getDefaultDirectories and IllegalArgumentException
is thrown.
* We set it earlier now so that loader and adapter will set it correctly
accordingly, which is consistent with the logic prior to ag/1424283.
Bug: 31778407
Test: manual:
- follow steps to reproduce in the bug
- verify search actions in tests APK work well
Change-Id: I5b2eaeaac5f3d1b45b9f9be722b76d94035a51e5
diff --git a/src/com/android/contacts/common/list/DirectoryListLoader.java b/src/com/android/contacts/common/list/DirectoryListLoader.java
index c45a3ca..13d0f92 100644
--- a/src/com/android/contacts/common/list/DirectoryListLoader.java
+++ b/src/com/android/contacts/common/list/DirectoryListLoader.java
@@ -199,11 +199,13 @@
mDefaultDirectoryList.addRow(new Object[] {
Directory.DEFAULT,
getContext().getString(R.string.contactsList),
+ null,
null
});
mDefaultDirectoryList.addRow(new Object[] {
Directory.LOCAL_INVISIBLE,
getContext().getString(R.string.local_invisible_directory),
+ null,
null
});
}
diff --git a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
index dd45fc2..ebe812e 100644
--- a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
@@ -522,6 +522,8 @@
if (savedInstanceState != null && savedInstanceState.getBoolean(KEY_DELETION_IN_PROGRESS)) {
deleteSelectedContacts();
}
+
+ setDirectorySearchMode();
}
public void initializeActionBarAdapter(Bundle savedInstanceState) {
@@ -587,7 +589,9 @@
setQueryString(mActionBarAdapter.getQueryString(), true);
setVisibleScrollbarEnabled(!isSearchMode());
+ }
+ private void setDirectorySearchMode() {
if (mContactsRequest.isDirectorySearchEnabled()) {
setDirectorySearchMode(DirectoryListLoader.SEARCH_MODE_DEFAULT);
} else {