2017-02-15 10 views
0

私はXamarinフォームアプリケーションでGoogle Mapを実装しましたが、マップが現在の場所の読み込みを完了する前にページからナビゲートするときは例外です。[MissingMethodException:Xamarin.Forms.Maps.Android.MapRenderer ::。ctor(System.IntPtr、Android.Runtime.JniHandleOwnership)のコンストラクタが見つかりませんでした。

おそらく以前に発生した同じ問題ですが、回答していないhereです。私の研究から

私は、問題は、この個別の質問に与えられたリーキーabstrationの答えに関連していると信じて:

MonoDroid: Error when calling constructor of custom view - TwoDScrollViewは、しかし、私はこの問題を解決する方法を知っているために、JavaやAndroidの開発の十分な知識を持っていません。私は誰かがどこで、どのように私はこの例外を処理することができます説明することができることを期待しています。基本的には、私が達成する必要があると信じているのは例外をキャッチし、Droidプロジェクトで処理することですが、どこで?

これは私が得ている主要な例外メッセージです。

メッセージ:[非サポート例外:ネイティブハンドル0xbef7ad5c(key_handle 0xd4608e7)から型Xamarin.Forms.Maps.Android.MapRendererのインスタンスをアクティブにすることができません。]

メッセージ:[MissingMethodException:Xamarinが見つかりませんコンストラクタ。.Forms.Maps.Android.MapRenderer :: CTOR(System.IntPtr、Android.Runtime.JniHandleOwnership)]

メッセージ:タイプの[例外 'Java.Interop.JavaLocationException' スローされました]

答えて

1

しかし、この問題を解決する方法を知るには、JavaまたはAndroidの開発について十分な知識がありません。私は誰かがどこで、どのように私はこの例外を処理することができます説明することができることを期待しています。

私はあなたがページをナビゲートしているときの理由は、Xamarin.Forms.Maps.Android.MapRendererDispose方法は、マップの残りのロード前に呼び出されていると思います。 ACWMapRendererの新しいインスタンスを作成する必要がありますが、MapRendererには(IntPtr, JniHandleOwnership)のコンストラクタメソッドがないため、新しいインスタンスの作成に失敗しました。

あなたはPremature Dispose() Callsを参照する場合は、次の文を見つけることができます。

サブクラスは(のIntPtr、JniHandleOwnership)コンストラクタが含まれている場合は、そのタイプの新しいインスタンスが作成されます。

だから、この例外を回避するには、二つの引数を持つコンストラクタがあるXamarin.Forms.Maps.Android.MapRendererためのサブクラス(のはMyMapRendererをしましょう)、作成することです:(IntPtr, JniHandleOwnership)を、およびマップのレンダリングのためのMyMapRendererを使用します。

  1. PCLはXamarin.Forms.Map.Mapのカスタムコントロールを作成し、プロジェクトに代わりMyMapを使用します。

    public class MyMap:Map{} 
    
  2. (IntPtr, JniHandleOwnership)コンストラクタを持っているドロイドプロジェクトにカスタムMapRendererを作成します。カスタムMapRendererの作成の詳細については、Custom a Mapを参照してください

    [assembly:ExportRenderer(typeof(MyMap),typeof(MyMapRenderer))] 
    namespace YourNameSpace.Droid 
    { 
        public class MyMapRenderer:MapRenderer 
        { 
         public MyMapRenderer(IntPtr handle, JniHandleOwnership transfer) { } 
        } 
    } 
    

+0

賢明、ありがとう – JohnH

関連する問題