[MissingMethodException:找不到Xamarin.Forms.Maps.Android.MapRenderer::.ctor(System.IntPtr,Android.Runtime.JNIHandleOwnery)的构造函数]
我已经在我的Xamarin forms应用程序中实现了一个Google地图,但是在地图完成加载当前位置之前离开页面时,我遇到了上述异常 这可能与之前提出的问题相同,但尚未得到回答 根据我的研究,我相信这个问题与这个单独的问题中给出的漏洞百出的答案有关: 然而,我没有足够的Java或Android开发知识,不知道如何解决这个问题。我希望有人能解释我在哪里以及如何处理这个异常。基本上,我认为我需要实现的是捕获异常并在Droid项目中处理它,但是在哪里呢 这些是我得到的关键异常消息 消息:[NotSupportedException:无法从本机句柄0xbef7ad5c(密钥句柄0xd4608e7)激活Xamarin.Forms.Maps.Android.MapRenderer类型的实例。] 消息:[MissingMethodException:找不到Xamarin.Forms.Maps.Android.MapRenderer::.ctor(System.IntPtr,Android.Runtime.JniHandleOwnership)的构造函数] 消息:[引发了类型为“Java.Interop.JavaLocationException”的异常。] 然而,我没有足够的Java或Android开发知识,不知道如何解决这个问题。我希望有人能解释我在哪里以及如何处理这个异常 我认为原因是当您在页面中导航时,[MissingMethodException:找不到Xamarin.Forms.Maps.Android.MapRenderer::.ctor(System.IntPtr,Android.Runtime.JNIHandleOwnery)的构造函数],android,xamarin.android,xamarin.forms,Android,Xamarin.android,Xamarin.forms,我已经在我的Xamarin forms应用程序中实现了一个Google地图,但是在地图完成加载当前位置之前离开页面时,我遇到了上述异常 这可能与之前提出的问题相同,但尚未得到回答 根据我的研究,我相信这个问题与这个单独的问题中给出的漏洞百出的答案有关: 然而,我没有足够的Java或Android开发知识,不知道如何解决这个问题。我希望有人能解释我在哪里以及如何处理这个异常。基本上,我认为我需要实现的是捕获异常并在Droid项目中处理它,但是在哪里呢 这些是我得到的关键异常消息 消息:[NotSu
Xamarin.Forms.Maps.Android.maprederer
的Dispose
方法在加载其余地图之前被调用ACW
需要创建MapRenderer
的新实例,但未能创建新实例,因为MapRenderer
没有的构造函数方法(IntPtr,jnihandleowner)
如果您参考,您可以找到以下声明:
如果子类确实包含(IntPtr、jnihandleowner)构造函数,则将创建该类型的新实例
因此,此异常的解决方法是为Xamarin.Forms.Maps.Android.maprederer
创建一个子类(比如mymaprederer
),它有一个带有两个参数的构造函数:(IntPtr,JniHandleOwnership)
,并使用mymaprederer
进行地图渲染:
Xamarin.Forms.Map.Map
创建自定义控件,并在项目中使用MyMap
:
public class MyMap:Map{}
MapRenderer
,该项目具有(IntPtr,JniHandleOwnership)
构造函数:
[assembly:ExportRenderer(typeof(MyMap),typeof(MyMapRenderer))]
namespace YourNameSpace.Droid
{
public class MyMapRenderer:MapRenderer
{
public MyMapRenderer(IntPtr handle, JniHandleOwnership transfer) { }
}
}
MapRenderer
的详细信息,请参阅