diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.java index a14b5ddadc9..6e577b90293 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.java @@ -43,6 +43,7 @@ import com.facebook.react.uimanager.events.EventDispatcher; import com.facebook.react.uimanager.util.ReactFindViewUtil; import java.util.HashMap; import java.util.List; +import java.util.Map; /** * Utility class that handles the addition of a "role" for accessibility to either a View or @@ -54,7 +55,8 @@ public class ReactAccessibilityDelegate extends ExploreByTouchHelper { public static final HashMap sActionIdMap = new HashMap<>(); private static final String TAG = "ReactAccessibilityDelegate"; - private static int sCounter = 0x3f000000; + private static int sCustomActionCounter = 0x3f000000; + private static final Map sCustomActionIdMap = new HashMap<>(); private static final int TIMEOUT_SEND_ACCESSIBILITY_EVENT = 200; private static final int SEND_EVENT = 1; private static final String delimiter = ", "; @@ -192,14 +194,23 @@ public class ReactAccessibilityDelegate extends ExploreByTouchHelper { if (!action.hasKey("name")) { throw new IllegalArgumentException("Unknown accessibility action."); } - int actionId = sCounter; + + String actionName = action.getString("name"); String actionLabel = action.hasKey("label") ? action.getString("label") : null; - if (sActionIdMap.containsKey(action.getString("name"))) { - actionId = sActionIdMap.get(action.getString("name")); + int actionId; + + if (sActionIdMap.containsKey(actionName)) { + actionId = sActionIdMap.get(actionName); } else { - sCounter++; + if (sCustomActionIdMap.containsKey(actionName)) { + actionId = sCustomActionIdMap.get(actionName); + } else { + actionId = sCustomActionCounter++; + sCustomActionIdMap.put(actionName, actionId); + } } - mAccessibilityActionsMap.put(actionId, action.getString("name")); + + mAccessibilityActionsMap.put(actionId, actionName); final AccessibilityActionCompat accessibilityAction = new AccessibilityActionCompat(actionId, actionLabel); info.addAction(accessibilityAction);