代码之家  ›  专栏  ›  技术社区  ›  Barney Chambers

Xamarin表单:Android-未找到覆盖OnElementChanged()的合适方法

  •  2
  • Barney Chambers  · 技术社区  · 8 年前

    我正在写一个Xamarin表单应用程序,它在地图上显示一个纬度/经度坐标的多边形。我正在经历 this

    我在我的Android项目中创建了一个名为 CustomMapRenderer.cs 它继承了Android的 MapRenderer OnElementChanged 方法,但我遇到了一个错误

    1) CustomMapRenderer.OnElementChanged(ElementChangedEventArgs<View>)': no suitable method found to override .

    Argument 1: cannot convert from 'Xamarin.Forms.Platform.Android.ElementChangedEventArgs<Xamarin.Forms.View> to 'Xamarin.Forms.Platform.Android.ElementChangedEventArgs<Xamarin.Forms.Maps.Map>

    我很困惑,因为这段代码没有从上面链接的教程中修改。

    这是我的代码:

    using Android.Gms.Maps;
    using MapOverlay.Droid;
    using SafeAgSystems.Models;
    using System.Collections.Generic;
    using Xamarin.Forms;
    using Xamarin.Forms.Maps;
    using Xamarin.Forms.Maps.Android;
    
    [assembly: ExportRenderer(typeof(CustomMap), typeof(CustomMapRenderer))]
    namespace MapOverlay.Droid
    { 
    public class CustomMapRenderer : MapRenderer, IOnMapReadyCallback
      {
        GoogleMap map;
        List<Position> shapeCoordinates;
    
        protected override void OnElementChanged(Xamarin.Forms.Platform.Android.ElementChangedEventArgs<View> e) //Error 1
        {
            base.OnElementChanged(e); //Error2
    
            if (e.OldElement != null)
            {
                // Unsubscribe
            }
    
            if (e.NewElement != null)
            {
                var formsMap = (CustomMap)e.NewElement;
                shapeCoordinates = formsMap.ShapeCoordinates;
    
                ((MapView)Control).GetMapAsync(this);
            }
        }
    
      }
    }
    
    1 回复  |  直到 8 年前
        1
  •  2
  •   Sami Kuhmonen    8 年前

    因为你继承自 MapRenderer

    protected override void OnElementChanged(Xamarin.Forms.Platform.Android.ElementChangedEventArgs<Map> e)
    
    推荐文章