From ac44cf9dec53b3b8be1836f20479f01820f3667f Mon Sep 17 00:00:00 2001 From: Paul DiPietro Date: Tue, 2 Aug 2016 11:15:35 -0500 Subject: [Android] Add null check to prevent crashes when long clicking a text entry in ListView header/footer (#271) When a text entry control (Entry, Editor, SearchBar, etc.) was being used in the header or footer of a ListView on Android, a long click/press would cause a crash. This was occurring in the HandleContextMode method because it expected to be a cell. Adding a null check and breaking out of the method if the value from GetCellForPosition is null prevents this crash from occurring. --- .../Bugzilla40858.cs | 55 ++++++++++++++++++++++ .../Xamarin.Forms.Controls.Issues.Shared.projitems | 1 + 2 files changed, 56 insertions(+) create mode 100644 Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla40858.cs (limited to 'Xamarin.Forms.Controls.Issues') diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla40858.cs b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla40858.cs new file mode 100644 index 00000000..0bb024ca --- /dev/null +++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla40858.cs @@ -0,0 +1,55 @@ +using System; + +using Xamarin.Forms.CustomAttributes; +using Xamarin.Forms.Internals; + +#if UITEST +using Xamarin.UITest; +using NUnit.Framework; +#endif + +namespace Xamarin.Forms.Controls.Issues +{ + [Preserve(AllMembers = true)] + [Issue(IssueTracker.Bugzilla, 40858, "Long clicking a text entry in a ListView header/footer cause a crash", PlatformAffected.Android)] + public class Bugzilla40858 : TestContentPage + { + protected override void Init() + { + Content = new StackLayout + { + Children = + { + new ListView + { + Header = new Editor + { + AutomationId = "Header", + HeightRequest = 50, + Text = "ListView Header -- Editor" + }, + Footer = new Entry + { + AutomationId = "Footer", + HeightRequest = 50, + Text = "ListView Footer -- Entry" + } + } + } + }; + } + +#if UITEST + +#if __ANDROID__ + [Test] + public void ListViewDoesNotCrashOnTextEntryHeaderOrFooterLongClick() + { + RunningApp.TouchAndHold(x => x.Marked("Header")); + RunningApp.TouchAndHold(x => x.Marked("Footer")); + } +#endif + +#endif + } +} 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 85c287f5..6531b47d 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 @@ -104,6 +104,7 @@ + -- cgit v1.2.3