diff options
author | Rohan Shah <shahrk@google.com> | 2014-08-15 14:33:05 -0700 |
---|---|---|
committer | Rohan Shah <shahrk@google.com> | 2014-08-15 14:44:38 -0700 |
commit | eec2e988e634e5cd501b4fce3e78d6caadfe7558 (patch) | |
tree | f8dafc8e0b0abfdfa03e650eb2b65c4a9561dc94 /src | |
parent | 0c0c546720bbb820ab5fe2f9dfdf92d408379e56 (diff) | |
download | android_packages_apps_UnifiedEmail-eec2e988e634e5cd501b4fce3e78d6caadfe7558.tar.gz android_packages_apps_UnifiedEmail-eec2e988e634e5cd501b4fce3e78d6caadfe7558.tar.bz2 android_packages_apps_UnifiedEmail-eec2e988e634e5cd501b4fce3e78d6caadfe7558.zip |
Fix "Move to" crashing Gmail
We were adding a 0-section adapter to the list,
which caused the IndexOutOfBoundsException.
Also addressed the creation of 0-length spannables
which was flooding the error log.
Bug: 16185488
Change-Id: I119a4b753b9e4e6eb8abe676e73817a1d73b38b9
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/mail/ui/HierarchicalFolderSelectorAdapter.java | 8 | ||||
-rw-r--r-- | src/com/android/mail/ui/SingleFolderSelectionDialog.java | 30 |
2 files changed, 24 insertions, 14 deletions
diff --git a/src/com/android/mail/ui/HierarchicalFolderSelectorAdapter.java b/src/com/android/mail/ui/HierarchicalFolderSelectorAdapter.java index 0f52e6565..b306f8d36 100644 --- a/src/com/android/mail/ui/HierarchicalFolderSelectorAdapter.java +++ b/src/com/android/mail/ui/HierarchicalFolderSelectorAdapter.java @@ -117,8 +117,12 @@ public class HierarchicalFolderSelectorAdapter extends FolderSelectorAdapter { display.append(mContext.getResources().getString(R.string.hierarchical_folder_top, topParentName)); } - display.setSpan(new ForegroundColorSpan(R.color.hierarchical_folder_parent_color), 0, - display.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + + // If there is nothing appended to display, don't try to setSpan. + if (display.length() > 0) { + display.setSpan(new ForegroundColorSpan(R.color.hierarchical_folder_parent_color), + 0, display.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + } display.append(folderName); } return display; diff --git a/src/com/android/mail/ui/SingleFolderSelectionDialog.java b/src/com/android/mail/ui/SingleFolderSelectionDialog.java index 1fd74c506..a61ded0ff 100644 --- a/src/com/android/mail/ui/SingleFolderSelectionDialog.java +++ b/src/com/android/mail/ui/SingleFolderSelectionDialog.java @@ -82,21 +82,27 @@ public class SingleFolderSelectionDialog extends FolderSelectionDialog { dialog.getListView().setAdapter(null); mAdapter.clearSections(); - // TODO(mindyp) : bring this back in UR8 when Email providers - // will have divided folder sections. - // Currently, the number of adapters are assumed to match the - // number of headers in the string array. - mAdapter.addSection(new SystemFolderSelectorAdapter(context, data, - R.layout.single_folders_view, mCurrentFolder)); - - // TODO(mindyp): we currently do not support frequently moved to - // folders, at headers[1]; need to define what that means.*/ + + // Create a system folder adapter and an adapter for hierarchical + // and user folders. If there are no folders added to either of them, + // do not add as a section since a 0-count adapter will result in an + // IndexOutOfBoundsException. + SystemFolderSelectorAdapter sysFolderAdapter = + new SystemFolderSelectorAdapter(context, data, + R.layout.single_folders_view, mCurrentFolder); + if (sysFolderAdapter.getCount() > 0) { + mAdapter.addSection(sysFolderAdapter); + } + // TODO(pwestbro): determine if we need to call filterFolders // if filterFolders is not necessary, remove the method decl with one arg. - mAdapter.addSection( + UserFolderHierarchicalFolderSelectorAdapter hierarchicalAdapter = new UserFolderHierarchicalFolderSelectorAdapter(context, - AddableFolderSelectorAdapter.filterFolders(data), - R.layout.single_folders_view, mCurrentFolder)); + AddableFolderSelectorAdapter.filterFolders(data), + R.layout.single_folders_view, mCurrentFolder); + if (hierarchicalAdapter.getCount() > 0) { + mAdapter.addSection(hierarchicalAdapter); + } dialog.getListView().setAdapter(mAdapter); } |