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