summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Platform.Android/FastRenderers
diff options
context:
space:
mode:
authorE.Z. Hart <hartez@users.noreply.github.com>2017-06-22 16:33:03 -0600
committerRui Marinho <me@ruimarinho.net>2017-06-22 23:33:03 +0100
commit075a6b370d1dce8f211264422723276411f98b85 (patch)
treeead4eeb9d5a0edf1fb9f9926c88dfd9510073bc7 /Xamarin.Forms.Platform.Android/FastRenderers
parent330b5156164e7951e01bc2493f9ca54a2587783e (diff)
downloadxamarin-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')
-rw-r--r--Xamarin.Forms.Platform.Android/FastRenderers/AutomationPropertiesProvider.cs4
-rw-r--r--Xamarin.Forms.Platform.Android/FastRenderers/ButtonRenderer.cs4
-rw-r--r--Xamarin.Forms.Platform.Android/FastRenderers/FrameRenderer.cs2
-rw-r--r--Xamarin.Forms.Platform.Android/FastRenderers/ImageRenderer.cs5
-rw-r--r--Xamarin.Forms.Platform.Android/FastRenderers/LabelRenderer.cs2
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);