Fix for previous PR19985 - AccessibilityNodeInfoCompat.Checked (#19991)
* fixed * fixed * fixed naming * just not having a good PR
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user