Fix for previous PR19985 - AccessibilityNodeInfoCompat.Checked (#19991)

* fixed

* fixed

* fixed naming

* just not having a good PR
This commit is contained in:
Bobby Cannon
2025-11-08 06:16:42 -05:00
committed by GitHub
parent 7bbf4e1d71
commit a12b8d7061
@@ -9,13 +9,18 @@ namespace Avalonia.Android.Automation
{
internal class ToggleNodeInfoProvider : NodeInfoProvider<IToggleProvider>
{
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;