web-dev-qa-db-ja.com

Xamarin.Forms MissingMethodException: 'Android.Support.V4.Widget.DrawerLayout.AddDrawerListener'が見つかりません

私は次のリンクからすべてをたどりました: https://developer.xamarin.com/guides/xamarin-forms/user-interface/navigation/master-detail-page/ 私が書いたコードはここにあります: http://github.com/foyzulkarim/XamarinFormsDrawer UWPプロジェクトを使用してWindows10ローカルマシンに同じプロジェクトを正常に展開しましたが、エミュレーターまたはデバイスに展開するときはいつでも、次の例外をスローしています。

System.MissingMethodException: Method 'Android.Support.V4.Widget.DrawerLayout.AddDrawerListener' not found.
09-17 17:16:33.636 D/Mono    (10472): DllImport attempting to load: '/system/lib/liblog.so'.
09-17 17:16:33.637 D/Mono    (10472): DllImport loaded library '/system/lib/liblog.so'.
09-17 17:16:33.637 D/Mono    (10472): DllImport searching in: '/system/lib/liblog.so' ('/system/lib/liblog.so').
09-17 17:16:33.637 D/Mono    (10472): Searching for '__Android_log_print'.
09-17 17:16:33.637 D/Mono    (10472): Probing '__Android_log_print'.
09-17 17:16:33.637 D/Mono    (10472): Found as '__Android_log_print'.
09-17 17:16:33.645 I/MonoDroid(10472): UNHANDLED EXCEPTION:
09-17 17:16:33.658 I/MonoDroid(10472): System.MissingMethodException: Method 'Android.Support.V4.Widget.DrawerLayout.AddDrawerListener' not found.
09-17 17:16:33.658 I/MonoDroid(10472):   at Xamarin.Forms.Platform.Android.Platform.CreateRenderer (Xamarin.Forms.VisualElement element) [0x0001f] in C:\BuildAgent2\work\aad494dc9bc9783\Xamarin.Forms.Platform.Android\Platform.cs:282 
09-17 17:16:33.658 I/MonoDroid(10472):   at Xamarin.Forms.Platform.Android.RendererFactory.GetRenderer (Xamarin.Forms.VisualElement view) [0x00000] in C:\BuildAgent2\work\aad494dc9bc9783\Xamarin.Forms.Platform.Android\RendererFactory.cs:10 
09-17 17:16:33.658 I/MonoDroid(10472):   at Xamarin.Forms.Platform.Android.AppCompat.Platform.AddChild (Xamarin.Forms.Page page, System.Boolean layout) [0x00015] in C:\BuildAgent2\work\aad494dc9bc9783\Xamarin.Forms.Platform.Android\AppCompat\Platform.cs:248 
09-17 17:16:33.658 I/MonoDroid(10472):   at Xamarin.Forms.Platform.Android.AppCompat.Platform.SetPage (Xamarin.Forms.Page newRoot) [0x00089] in C:\BuildAgent2\work\aad494dc9bc9783\Xamarin.Forms.Platform.Android\AppCompat\Platform.cs:237 
09-17 17:16:33.658 I/MonoDroid(10472):   at Xamarin.Forms.Platform.Android.FormsAppCompatActivity.InternalSetPage (Xamarin.Forms.Page page) [0x0009b] in C:\BuildAgent2\work\aad494dc9bc9783\Xamarin.Forms.Platform.Android\AppCompat\FormsAppCompatActivity.cs:336 
09-17 17:16:33.658 I/MonoDroid(10472):   at Xamarin.Forms.Platform.Android.FormsAppCompatActivity.SetMainPage () [0x00000] in C:\BuildAgent2\work\aad494dc9bc9783\Xamarin.Forms.Platform.Android\AppCompat\FormsAppCompatActivity.cs:410 
09-17 17:16:33.659 I/MonoDroid(10472):   at Xamarin.Forms.Platform.Android.FormsAppCompatActivity.LoadApplication (Xamarin.Forms.Application application) [0x00158] in C:\BuildAgent2\work\aad494dc9bc9783\Xamarin.Forms.Platform.Android\AppCompat\FormsAppCompatActivity.cs:123 
09-17 17:16:33.659 I/MonoDroid(10472):   at App1.Droid.MainActivity.OnCreate (Android.OS.Bundle bundle) [0x00018] in C:\Users\foyzu\Source\Github\XamarinForms\XamarinFormsDrawer\App1\App1\App1.Droid\MainActivity.cs:23 
09-17 17:16:33.659 I/MonoDroid(10472):   at Android.Support.V4.App.FragmentActivity.n_OnCreate_Landroid_os_Bundle_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_savedInstanceState) [0x00011] in <71c3e52f1b484794bca1cdfb1b8b1fdb>:0 
09-17 17:16:33.659 I/MonoDroid(10472):   at (wrapper dynamic-method) System.Object:1a87dfa6-a154-49b0-925d-8ddad74d97cf (intptr,intptr,intptr)
09-17 17:16:33.677 W/art     (10472): JNI RegisterNativeMethods: attempt to register 0 native methods for Android.runtime.JavaProxyThrowable
09-17 17:16:33.681 D/Mono    (10472): DllImport searching in: '__Internal' ('(null)').
09-17 17:16:33.681 D/Mono    (10472): Searching for 'Java_interop_jnienv_throw'.
09-17 17:16:33.681 D/Mono    (10472): Probing 'Java_interop_jnienv_throw'.
09-17 17:16:33.681 D/Mono    (10472): Found as 'Java_interop_jnienv_throw'.
An unhandled exception occured.

09-17 17:16:34.399 E/mono    (10472): 
09-17 17:16:34.399 E/mono    (10472): Unhandled Exception:
09-17 17:16:34.399 E/mono    (10472): System.MissingMethodException: Method 'Android.Support.V4.Widget.DrawerLayout.AddDrawerListener' not found.
09-17 17:16:34.399 E/mono-rt (10472): [ERROR] FATAL UNHANDLED EXCEPTION: System.MissingMethodException: Method 'Android.Support.V4.Widget.DrawerLayout.AddDrawerListener' not found.
referenceTable GDEF length=814 1
referenceTable GSUB length=11364 1
referenceTable GPOS length=47302 1

enter image description here

enter image description here

9
Foyzul Karim

解決策は、Xamarin.Formsパッケージのみを更新する必要があったことです。下の画像のように。

Follow the red circle at the bottom, only update the Xamarin.Forms

更新後、packages.configファイルは次のようになります

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Xamarin.Android.Support.Animated.Vector.Drawable" version="23.3.0" targetFramework="monoandroid60" />
  <package id="Xamarin.Android.Support.Design" version="23.3.0" targetFramework="monoandroid60" />
  <package id="Xamarin.Android.Support.v4" version="23.3.0" targetFramework="monoandroid60" />
  <package id="Xamarin.Android.Support.v7.AppCompat" version="23.3.0" targetFramework="monoandroid60" />
  <package id="Xamarin.Android.Support.v7.CardView" version="23.3.0" targetFramework="monoandroid60" />
  <package id="Xamarin.Android.Support.v7.MediaRouter" version="23.3.0" targetFramework="monoandroid60" />
  <package id="Xamarin.Android.Support.v7.RecyclerView" version="23.3.0" targetFramework="monoandroid60" />
  <package id="Xamarin.Android.Support.Vector.Drawable" version="23.3.0" targetFramework="monoandroid60" />
  <package id="Xamarin.Forms" version="2.3.2.127" targetFramework="monoandroid60" />
</packages>

そして、以下のような残りのパッケージは無視してください。 Ignore these updates

19
Foyzul Karim

Nuget-packagesを最新のものに更新するだけです(Xamarin.formsも)

クリーンなソリューション

visualStudioを閉じます

次のすべての.Zipファイルを削除します。

C:\ Users [YouUserName]\AppData\Local\Xamarin\zips

VisualStudioを再起動して再コンパイルします:)それらの.Zipファイルを再度ダウンロードします(数分かかる場合があります)。これらのzipには、関連するAndroidサポートライブラリが含まれています。したがって、実際のライブラリがダウンロードされます(参照されているxamarin.formsバージョンが関連しています)。

1
Umut Bebek

ほとんどの場合Xamarin.Formsパッケージを最新バージョンに更新する必要があります

すべてのプロジェクトで(他の例外を回避するため)

Portable、.Driod、.[〜#〜] ios [〜#〜]およびWindows Phoneの場合存在する場合は、ソリューションをクリーンアップしてVisual Studioを閉じ、再度開く必要があります。Finlayはすべて問題ありません。

ただし、場合によっては、Xamarin.Formsパッケージを2.5.0.121934ではなく2.3にダウングレードする必要があります。

0
Mike Darwish

Xamarin.Formsnugetパッケージの更新が機能しませんでした。私の場合、Xamarin.FormsをVisual Studioで動作させるには、Android Studioの更新が必要でした。更新後、Android Studioを再起動して、更新を探してくださいすべてのアップデートが一度にインストールされるわけではないため、これを繰り返し続ける必要があります。少なくとも私の場合はそうです。

Android StudioにはAndroid SDKまたはVisualStudioまたはXamarinが必要とするその他のコンポーネントが含まれているため、これは機能したと思います。

0
bojank