Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
[MissingMethodException:找不到Xamarin.Forms.Maps.Android.MapRenderer::.ctor(System.IntPtr,Android.Runtime.JNIHandleOwnery)的构造函数]_Android_Xamarin.android_Xamarin.forms - Fatal编程技术网

[MissingMethodException:找不到Xamarin.Forms.Maps.Android.MapRenderer::.ctor(System.IntPtr,Android.Runtime.JNIHandleOwnery)的构造函数]

[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应用程序中实现了一个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开发知识,不知道如何解决这个问题。我希望有人能解释我在哪里以及如何处理这个异常

我认为原因是当您在页面中导航时,
Xamarin.Forms.Maps.Android.maprederer
Dispose
方法在加载其余地图之前被调用
ACW
需要创建
MapRenderer
的新实例,但未能创建新实例,因为
MapRenderer
没有
的构造函数方法(IntPtr,jnihandleowner)

如果您参考,您可以找到以下声明:

如果子类确实包含(IntPtr、jnihandleowner)构造函数,则将创建该类型的新实例

因此,此异常的解决方法是为
Xamarin.Forms.Maps.Android.maprederer
创建一个子类(比如
mymaprederer
),它有一个带有两个参数的构造函数:
(IntPtr,JniHandleOwnership)
,并使用
mymaprederer
进行地图渲染:

  • 在PCL中,为
    Xamarin.Forms.Map.Map
    创建自定义控件,并在项目中使用
    MyMap

    public class MyMap:Map{}
    
  • 在Droid项目中创建自定义的
    MapRenderer
    ,该项目具有
    (IntPtr,JniHandleOwnership)
    构造函数:

    [assembly:ExportRenderer(typeof(MyMap),typeof(MyMapRenderer))]
    namespace YourNameSpace.Droid
    {
        public class MyMapRenderer:MapRenderer
        {
            public MyMapRenderer(IntPtr handle, JniHandleOwnership transfer) { }
        }
    }
    
  • 有关创建自定义
    MapRenderer
    的详细信息,请参阅