我正在渲染Android的谷歌地图
我第一次使用谷歌地图加载页面时,它可以正常工作,但是当我关闭页面并重新打开它时,我得到了例外:
System.NotSupportedException:无法从本机句柄0xcc700019(key_handle 0x433fb7f8)激活SmartScout.Droid.CustomMapRenderer类型的实例。
我发现OnElementChanged
中的MapRenderer
被调用了两次,第二次因上述异常而崩溃。
我的代码是:
protected override void OnElementChanged(Xamarin.Forms.Platform.Android.ElementChangedEventArgs<Xamarin.Forms.View> e)
{
base.OnElementChanged(e);
if (e.OldElement != null)
{
return;
//map.InfoWindowClick -= OnInfoWindowClick;
}
if (e.NewElement != null)
{
var formsMap = (CustomMap)e.NewElement;
//customPins = formsMap.CustomPins;
((MapView)Control).GetMapAsync(this);
}
}
任何解决方案?
答案 0 :(得分:0)
更改此
((MapView)Control).GetMapAsync(this);
并添加此代码
var androidMapView = (MapView)Control;
我的完整工作代码正在关注
protected override void OnElementChanged(Xamarin.Forms.Platform.Android.ElementChangedEventArgs<View> e)
{
base.OnElementChanged(e);
var formsMap = (ExtendedMap)e.NewElement;
var androidMapView = (MapView)Control;
if (androidMapView != null && androidMapView.Map != null)
{
androidMapView.Map.InfoWindowClick += MapOnInfoWindowClick;
}
if (formsMap != null)
{
//code for run first time only
}
}