From 064818b81999a49a2e49f97c4e4854523f0542c6 Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Wed, 7 Mar 2012 11:29:03 -0800 Subject: [PATCH] Fixed class cast exceptions when constructing task list menus --- .../astrid/activity/TaskListFragment.java | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java b/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java index 376bb046f..11f38d2f2 100644 --- a/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java @@ -370,19 +370,26 @@ public class TaskListFragment extends ListFragment implements OnScrollListener, } protected void addMenuItem(Menu menu, int title, int imageRes, int id, boolean showAsAction) { - TaskListActivity activity = (TaskListActivity) getActivity(); - if (activity.getFragmentLayout() != AstridActivity.LAYOUT_SINGLE && showAsAction) { + AstridActivity activity = (AstridActivity) getActivity(); + if ((activity.getFragmentLayout() != AstridActivity.LAYOUT_SINGLE && showAsAction) || !(activity instanceof TaskListActivity)) { MenuItem item = menu.add(Menu.NONE, id, Menu.NONE, title); item.setIcon(imageRes); - item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); + if (activity instanceof TaskListActivity) + item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); } else { - activity.getMainMenuPopover().addMenuItem(title, imageRes, id); + ((TaskListActivity) activity).getMainMenuPopover().addMenuItem(title, imageRes, id); } } - protected void addMenuItem(CharSequence title, Drawable image, Intent customIntent, int id) { - TaskListActivity activity = (TaskListActivity) getActivity(); - activity.getMainMenuPopover().addMenuItem(title, image, customIntent, id); + protected void addMenuItem(Menu menu, CharSequence title, Drawable image, Intent customIntent, int id) { + Activity activity = getActivity(); + if (activity instanceof TaskListActivity) { + ((TaskListActivity) activity).getMainMenuPopover().addMenuItem(title, image, customIntent, id); + } else { + MenuItem item = menu.add(Menu.NONE, id, Menu.NONE, title); + item.setIcon(image); + item.setIntent(customIntent); + } } /** @@ -392,12 +399,13 @@ public class TaskListFragment extends ListFragment implements OnScrollListener, */ @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { - TaskListActivity activity = (TaskListActivity) getActivity(); + Activity activity = getActivity(); if (activity == null) return; boolean isTablet = AndroidUtilities.isTabletSized(activity); - activity.getMainMenuPopover().clear(); + if (activity instanceof TaskListActivity) + ((TaskListActivity) activity).getMainMenuPopover().clear(); // --- sort if (allowResorting()) { @@ -431,7 +439,7 @@ public class TaskListFragment extends ListFragment implements OnScrollListener, Intent intent = new Intent(AstridApiConstants.ACTION_TASK_LIST_MENU); intent.setClassName(resolveInfo.activityInfo.packageName, resolveInfo.activityInfo.name); - addMenuItem(resolveInfo.loadLabel(pm), resolveInfo.loadIcon(pm), intent, MENU_ADDON_INTENT_ID); + addMenuItem(menu, resolveInfo.loadLabel(pm), resolveInfo.loadIcon(pm), intent, MENU_ADDON_INTENT_ID); } }