From a12b8d706196be00e3f38062bb55575d2eca05bc Mon Sep 17 00:00:00 2001 From: Bobby Cannon Date: Sat, 8 Nov 2025 06:16:42 -0500 Subject: [PATCH] Fix for previous PR19985 - AccessibilityNodeInfoCompat.Checked (#19991) * fixed * fixed * fixed naming * just not having a good PR --- .../Automation/ToggleNodeInfoProvider.cs | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/Android/Avalonia.Android/Automation/ToggleNodeInfoProvider.cs b/src/Android/Avalonia.Android/Automation/ToggleNodeInfoProvider.cs index 907bd2e3a0..cbd64e3b18 100644 --- a/src/Android/Avalonia.Android/Automation/ToggleNodeInfoProvider.cs +++ b/src/Android/Avalonia.Android/Automation/ToggleNodeInfoProvider.cs @@ -9,13 +9,18 @@ namespace Avalonia.Android.Automation { internal class ToggleNodeInfoProvider : NodeInfoProvider { - private PropertyInfo? _checkedProperty; + private static PropertyInfo? s_checkedProperty; public ToggleNodeInfoProvider(ExploreByTouchHelper owner, AutomationPeer peer, int virtualViewId) : base(owner, peer, virtualViewId) { } + static ToggleNodeInfoProvider() + { + s_checkedProperty = typeof(AccessibilityNodeInfoCompat).GetProperty(nameof(AccessibilityNodeInfoCompat.Checked)); + } + public override bool PerformNodeAction(int action, Bundle? arguments) { IToggleProvider provider = GetProvider(); @@ -36,11 +41,11 @@ namespace Avalonia.Android.Automation IToggleProvider provider = GetProvider(); - _checkedProperty ??= nodeInfo.GetType().GetProperty(nameof(nodeInfo.Checked)); - if (_checkedProperty?.PropertyType == typeof(int)) + s_checkedProperty ??= nodeInfo.GetType().GetProperty(nameof(nodeInfo.Checked)); + if (s_checkedProperty?.PropertyType == typeof(int)) { // Needed for Xamarin.AndroidX.Core 1.17+ - _checkedProperty.SetValue(this, + s_checkedProperty.SetValue(this, provider.ToggleState switch { ToggleState.On => 1, @@ -48,10 +53,10 @@ namespace Avalonia.Android.Automation _ => 0 }); } - else if (_checkedProperty?.PropertyType == typeof(bool)) + else if (s_checkedProperty?.PropertyType == typeof(bool)) { // Needed for Xamarin.AndroidX.Core < 1.17 - _checkedProperty.SetValue(this, provider.ToggleState == ToggleState.On); + s_checkedProperty.SetValue(this, provider.ToggleState == ToggleState.On); } nodeInfo.Checkable = true;