diff options
author | E.Z. Hart <hartez@users.noreply.github.com> | 2017-06-22 16:33:03 -0600 |
---|---|---|
committer | Rui Marinho <me@ruimarinho.net> | 2017-06-22 23:33:03 +0100 |
commit | 075a6b370d1dce8f211264422723276411f98b85 (patch) | |
tree | ead4eeb9d5a0edf1fb9f9926c88dfd9510073bc7 /Xamarin.Forms.Platform.Android/FastRenderers | |
parent | 330b5156164e7951e01bc2493f9ca54a2587783e (diff) | |
download | xamarin-forms-075a6b370d1dce8f211264422723276411f98b85.tar.gz xamarin-forms-075a6b370d1dce8f211264422723276411f98b85.tar.bz2 xamarin-forms-075a6b370d1dce8f211264422723276411f98b85.zip |
Set the Id field for Android Views created by Forms (#1004)
* Repro of modal-over-map-crash issue
* Automated test for maps modal crash
* Generate Ids for all Renderer Views on Android
* Add Ids for PageContainer and PageRenderer
* Remove TODO comment
* Verify fast renderers aren't disposed before querying Id
Diffstat (limited to 'Xamarin.Forms.Platform.Android/FastRenderers')
5 files changed, 12 insertions, 5 deletions
diff --git a/Xamarin.Forms.Platform.Android/FastRenderers/AutomationPropertiesProvider.cs b/Xamarin.Forms.Platform.Android/FastRenderers/AutomationPropertiesProvider.cs index 6cd158ff..e4118ac4 100644 --- a/Xamarin.Forms.Platform.Android/FastRenderers/AutomationPropertiesProvider.cs +++ b/Xamarin.Forms.Platform.Android/FastRenderers/AutomationPropertiesProvider.cs @@ -162,8 +162,8 @@ namespace Xamarin.Forms.Platform.Android.FastRenderers if (elemValue != null) { var id = Control.Id; - if (id == -1) - id = Control.Id = FormsAppCompatActivity.GetUniqueId(); + if (id == global::Android.Views.View.NoId) + id = Control.Id = Platform.GenerateViewId(); var renderer = elemValue?.GetRenderer(); renderer?.SetLabelFor(id); diff --git a/Xamarin.Forms.Platform.Android/FastRenderers/ButtonRenderer.cs b/Xamarin.Forms.Platform.Android/FastRenderers/ButtonRenderer.cs index 0bda9830..11f669e9 100644 --- a/Xamarin.Forms.Platform.Android/FastRenderers/ButtonRenderer.cs +++ b/Xamarin.Forms.Platform.Android/FastRenderers/ButtonRenderer.cs @@ -37,7 +37,7 @@ namespace Xamarin.Forms.Platform.Android.FastRenderers _effectControlProvider = new EffectControlProvider(this); _textColorSwitcher = new Lazy<TextColorSwitcher>(() => new TextColorSwitcher(TextColors)); - Initialize(); + Initialize(); } public VisualElement Element => Button; @@ -216,6 +216,8 @@ namespace Xamarin.Forms.Platform.Android.FastRenderers } if (e.NewElement != null && !_isDisposed) { + this.EnsureId(); + UpdateFont(); UpdateText(); UpdateBitmap(); diff --git a/Xamarin.Forms.Platform.Android/FastRenderers/FrameRenderer.cs b/Xamarin.Forms.Platform.Android/FastRenderers/FrameRenderer.cs index d3583cce..82637a3b 100644 --- a/Xamarin.Forms.Platform.Android/FastRenderers/FrameRenderer.cs +++ b/Xamarin.Forms.Platform.Android/FastRenderers/FrameRenderer.cs @@ -145,6 +145,8 @@ namespace Xamarin.Forms.Platform.Android.FastRenderers if (e.NewElement != null) { + this.EnsureId(); + if (_visualElementTracker == null) { _visualElementTracker = new VisualElementTracker(this); diff --git a/Xamarin.Forms.Platform.Android/FastRenderers/ImageRenderer.cs b/Xamarin.Forms.Platform.Android/FastRenderers/ImageRenderer.cs index 5ca1bd20..a86bbd25 100644 --- a/Xamarin.Forms.Platform.Android/FastRenderers/ImageRenderer.cs +++ b/Xamarin.Forms.Platform.Android/FastRenderers/ImageRenderer.cs @@ -62,11 +62,12 @@ namespace Xamarin.Forms.Platform.Android.FastRenderers { await TryUpdateBitmap(e.OldElement); UpdateAspect(); + this.EnsureId(); ElementChanged?.Invoke(this, new VisualElementChangedEventArgs(e.OldElement, e.NewElement)); } - public override bool OnTouchEvent(MotionEvent e) + public override bool OnTouchEvent(MotionEvent e) { bool handled; var result = _visualElementRenderer.OnTouchEvent(e, Parent, out handled); @@ -74,7 +75,7 @@ namespace Xamarin.Forms.Platform.Android.FastRenderers return handled ? result : base.OnTouchEvent(e); } - protected virtual Size MinimumSize() + protected virtual Size MinimumSize() { return new Size(); } diff --git a/Xamarin.Forms.Platform.Android/FastRenderers/LabelRenderer.cs b/Xamarin.Forms.Platform.Android/FastRenderers/LabelRenderer.cs index 54c7bb01..18a313e7 100644 --- a/Xamarin.Forms.Platform.Android/FastRenderers/LabelRenderer.cs +++ b/Xamarin.Forms.Platform.Android/FastRenderers/LabelRenderer.cs @@ -177,6 +177,8 @@ namespace Xamarin.Forms.Platform.Android.FastRenderers if (e.NewElement != null) { + this.EnsureId(); + if (_visualElementTracker == null) { _visualElementTracker = new VisualElementTracker(this); |