diff options
Diffstat (limited to 'core/src')
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/menuhandler/MenuItemUtils.java | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/menuhandler/MenuItemUtils.java b/core/src/main/java/de/danoeh/antennapod/core/menuhandler/MenuItemUtils.java index d5181b2b7..cfa35ea29 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/menuhandler/MenuItemUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/menuhandler/MenuItemUtils.java @@ -35,4 +35,22 @@ public class MenuItemUtils { public interface UpdateRefreshMenuItemChecker { boolean isRefreshing(); } + + /** + * When pressing a context menu item, Android calls onContextItemSelected + * for ALL fragments in arbitrary order, not just for the fragment that the + * context menu was created from. This assigns the listener to every menu item, + * so that the correct fragment is always called first and can consume the click. + * <p /> + * Note that Android still calls the onContextItemSelected methods of all fragments + * when the passed listener returns false. + */ + public static void setOnClickListeners(Menu menu, MenuItem.OnMenuItemClickListener listener) { + for (int i = 0; i < menu.size(); i++) { + if (menu.getItem(i).getSubMenu() != null) { + setOnClickListeners(menu.getItem(i).getSubMenu(), listener); + } + menu.getItem(i).setOnMenuItemClickListener(listener); + } + } } |