summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRohan Shah <shahrk@google.com>2014-08-15 14:33:05 -0700
committerRohan Shah <shahrk@google.com>2014-08-15 14:44:38 -0700
commiteec2e988e634e5cd501b4fce3e78d6caadfe7558 (patch)
treef8dafc8e0b0abfdfa03e650eb2b65c4a9561dc94 /src
parent0c0c546720bbb820ab5fe2f9dfdf92d408379e56 (diff)
downloadandroid_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.java8
-rw-r--r--src/com/android/mail/ui/SingleFolderSelectionDialog.java30
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);
}