From caa3ebc71335d68e4a69758def542b322ccdbf90 Mon Sep 17 00:00:00 2001 From: Cfun <15718354+Cfun1@users.noreply.github.com> Date: Tue, 2 Mar 2021 23:06:21 +0100 Subject: [PATCH] Avoid ImageButtonRenderer ObjectDisposedException on Android (#996) * Avoid crash using reflection or exception ignoring * Remove uncessserary exception reference. Comment reference to XF issue Co-authored-by: Andrei --- .../IconTintColorEffectRouter.android.cs | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/CommunityToolkit/Xamarin.CommunityToolkit/Effects/IconTintColor/IconTintColorEffectRouter.android.cs b/src/CommunityToolkit/Xamarin.CommunityToolkit/Effects/IconTintColor/IconTintColorEffectRouter.android.cs index 129ffd7f5..4d7a5e05e 100644 --- a/src/CommunityToolkit/Xamarin.CommunityToolkit/Effects/IconTintColor/IconTintColorEffectRouter.android.cs +++ b/src/CommunityToolkit/Xamarin.CommunityToolkit/Effects/IconTintColor/IconTintColorEffectRouter.android.cs @@ -1,4 +1,5 @@ -using System.ComponentModel; +using System; +using System.ComponentModel; using System.Linq; using Android.Graphics; using Android.Widget; @@ -50,16 +51,21 @@ void ApplyTintColor() void ClearTintColor() { - switch (Control) + try { - case ImageView image: - image.ClearColorFilter(); - break; - case Button button: - var drawables = button.GetCompoundDrawables().Where(d => d != null); - foreach (var img in drawables) - img.ClearColorFilter(); - break; + switch (Control) + { + case ImageView image: + image.ClearColorFilter(); + break; + case Button button: + foreach (var drawable in button.GetCompoundDrawables()) + drawable?.ClearColorFilter(); + break; + } + } + catch (ObjectDisposedException) { + // We ignore ObjectDisposedException as a workaround of XF issue https://github.com/xamarin/Xamarin.Forms/issues/13889 } }