diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/ButtonBackgroundColorTest.cs b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/ButtonBackgroundColorTest.cs
new file mode 100644
index 00000000000..b366efcef8a
--- /dev/null
+++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/ButtonBackgroundColorTest.cs
@@ -0,0 +1,46 @@
+using Xamarin.Forms.CustomAttributes;
+using Xamarin.Forms.Internals;
+
+#if UITEST
+using Xamarin.Forms.Core.UITests;
+using Xamarin.UITest;
+using NUnit.Framework;
+
+#endif
+
+namespace Xamarin.Forms.Controls.Issues
+{
+#if UITEST
+ [Category(UITestCategories.Button)]
+#endif
+
+ [Preserve(AllMembers = true)]
+ [Issue(IssueTracker.Bugzilla, 57717, "Setting background color on Button in Android FormsApplicationActivity causes NRE", PlatformAffected.Android)]
+ public class ButtonBackgroundColorTest : TestContentPage
+ {
+ const string ButtonText = "I am a button";
+
+ protected override void Init()
+ {
+ var layout = new StackLayout();
+
+ var instructions = new Label { Text = "If you can see this, the test has passed." };
+
+ var button = new Button { Text = ButtonText, BackgroundColor = Color.CornflowerBlue };
+
+ layout.Children.Add(instructions);
+ layout.Children.Add(button);
+
+ Content = layout;
+ }
+
+#if UITEST
+ [Test]
+ public void ButtonBackgroundColorAutomatedTest()
+ {
+ // With the original bug in place, we'll crash before we get this far
+ RunningApp.WaitForElement(ButtonText);
+ }
+#endif
+ }
+}
\ No newline at end of file
diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems
index 37e3fc881f1..d11a4c61a86 100644
--- a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems
+++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems
@@ -213,6 +213,7 @@
+
diff --git a/Xamarin.Forms.Platform.Android/AppCompat/ButtonRenderer.cs b/Xamarin.Forms.Platform.Android/AppCompat/ButtonRenderer.cs
index e7e9a3bf0cf..9f336a2435a 100644
--- a/Xamarin.Forms.Platform.Android/AppCompat/ButtonRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/AppCompat/ButtonRenderer.cs
@@ -140,7 +140,7 @@ protected override void UpdateBackgroundColor()
if (Element == null || Control == null)
return;
- _backgroundTracker.UpdateBackgroundColor();
+ _backgroundTracker?.UpdateBackgroundColor();
}
void UpdateAll()
diff --git a/Xamarin.Forms.Platform.Android/Renderers/ButtonRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/ButtonRenderer.cs
index da4ec0ba319..0aac4edb337 100644
--- a/Xamarin.Forms.Platform.Android/Renderers/ButtonRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/Renderers/ButtonRenderer.cs
@@ -96,13 +96,12 @@ protected override void OnElementChanged(ElementChangedEventArgs