summaryrefslogtreecommitdiff
path: root/core/src
diff options
context:
space:
mode:
Diffstat (limited to 'core/src')
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/menuhandler/MenuItemUtils.java18
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);
+ }
+ }
}