diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/AccessibilityDelegateUtil.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/AccessibilityDelegateUtil.java index 347103949..647b4bf8e 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/AccessibilityDelegateUtil.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/AccessibilityDelegateUtil.java @@ -67,9 +67,13 @@ public class AccessibilityDelegateUtil { } public static void setDelegate(final View view) { + final String accessibilityHint = (String) view.getTag(R.id.accessibility_hint); + final AccessibilityRole accessibilityRole = (AccessibilityRole) view.getTag(R.id.accessibility_role); // if a view already has an accessibility delegate, replacing it could cause problems, // so leave it alone. - if (!ViewCompat.hasAccessibilityDelegate(view)) { + if (!ViewCompat.hasAccessibilityDelegate(view) && + accessibilityHint != null && + accessibilityRole != null) { ViewCompat.setAccessibilityDelegate( view, new AccessibilityDelegateCompat() { @@ -77,11 +81,6 @@ public class AccessibilityDelegateUtil { public void onInitializeAccessibilityNodeInfo( View host, AccessibilityNodeInfoCompat info) { super.onInitializeAccessibilityNodeInfo(host, info); - String accessibilityHint = (String) view.getTag(R.id.accessibility_hint); - AccessibilityRole accessibilityRole = (AccessibilityRole) view.getTag(R.id.accessibility_role); - if (accessibilityRole == null) { - accessibilityRole = AccessibilityRole.NONE; - } setRole(info, accessibilityRole, view.getContext()); if (!(accessibilityHint == null)) { String contentDescription=(String)info.getContentDescription(); @@ -103,7 +102,10 @@ public class AccessibilityDelegateUtil { //TODO: Eventually support for other languages on talkback - public static void setRole(AccessibilityNodeInfoCompat nodeInfo, final AccessibilityRole role, final Context context) { + public static void setRole(AccessibilityNodeInfoCompat nodeInfo, AccessibilityRole role, final Context context) { + if (role == null) { + role = AccessibilityRole.NONE; + } nodeInfo.setClassName(role.getValue()); if (Locale.getDefault().getLanguage().equals(new Locale("en").getLanguage())) { if (role.equals(AccessibilityRole.LINK)) {