web-dev-qa-db-fra.com

Xamarin.Forms MissingMethodException: 'Android.Support.V4.Widget.DrawerLayout.AddDrawerListener' introuvable

J'ai tout suivi du lien suivant: https://developer.xamarin.com/guides/xamarin-forms/user-interface/navigation/master-detail-page/ Le code I écrit peut être trouvé ici: http://github.com/foyzulkarim/XamarinFormsDrawer J'ai déployé avec succès le même projet sur ma machine Windows 10 Local en utilisant le projet UWP, mais chaque fois que je souhaite le déployer dans Emulator, ou dans mon appareil, il lance l'exception suivante.

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

La solution est, je devais mettre à jour le paquet, seulement le paquet Xamarin.Forms. Comme l'image ci-dessous. 

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

Après la mise à jour, le fichier packages.config devrait ressembler à celui ci-dessous

<?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>

Et ignorez le reste des paquets comme ci-dessous.  Ignore these updates

19
Foyzul Karim

Il suffit de mettre à jour vos paquets de nuget à la dernière (Xamarin.forms aussi)

solution propre

fermer le studio visuel

supprimer tous les fichiers .Zip dans:

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

Redémarrez visualstudio et recompilez :) Il téléchargera à nouveau ces fichiers .Zip (cela peut prendre quelques minutes). Ces zips incluent les bibliothèques de support Android associées. Donc, il va télécharger les vrais (votre version référencée xamarin.forms liée).

1
Umut Bebek

La plupart des cas Vous devez mettre à jour le fichier Xamarin.Forms Package vers la dernière version. 

sur tous vos projets (pour éviter les autres exceptions)

Pour Portable , . Driod ,.IOSet pour Windows Phone s'il existe, il est obligatoire de nettoyer votre solution, de fermer Visual Studio et de le rouvrir, Finlay tout ira bien. 

Mais dans certains cas, vous devez rétrograder votre Xamarin.Forms Package vers 2.3 au lieu de 2.5.0.121934.

0
Mike Darwish

La mise à jour du paquet de nuget Xamarin.Forms n'a pas fonctionné pour moi. Dans mon cas, une mise à jour d'Android Studio était nécessaire pour que Xamarin.Forms fonctionne avec Visual Studio. Après la mise à jour, redémarrez Android Studio, recherchez à nouveau les mises à jour et appliquez-les si elles sont trouvées. Vous devez continuer à répéter cela car toutes les mises à jour ne sont pas installées en une fois. C'était mon cas, au moins.

Je suppose que cela a fonctionné, car Android Studio contient le SDK Android ou d’autres composants nécessaires à Visual Studio ou à Xamarin.

0
bojank