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
La solution est, je devais mettre à jour le paquet, seulement le paquet Xamarin.Forms. Comme l'image ci-dessous.
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>
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).
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.
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.