Xamarin.Forms缺少方法异常:未找到“Android.Support.V4.Widget.DrawerLayout.AddDrawerListener”

9
我已经跟着以下链接的指引进行了操作: https://developer.xamarin.com/guides/xamarin-forms/user-interface/navigation/master-detail-page/ 您可以在这里找到我编写的代码:http://github.com/foyzulkarim/XamarinFormsDrawer 我已在我的Windows 10本地计算机上使用UWP项目成功部署了相同的项目,但是每当我想要在模拟器或设备上部署时,就会抛出以下异常。
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


1
打开 Nuget 包管理器,然后 卸载 所有包,再重新 安装 - Harshad Pansuriya
4个回答

19

解决方案是,我需要更新包,只需更新Xamarin.Forms包。如下图所示。

按照底部红圈所示,仅更新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>

忽略下面的其他软件包。 忽略这些更新


太好了,只需要重新启动Visual Studio即可。 - Rico Chan

1

只需将NuGet包更新到最新版本(包括Xamarin.forms)。

清理解决方案。

关闭Visual Studio。

删除以下文件夹中的所有.zip文件:

C:\Users[您的用户名]\AppData\Local\Xamarin\zips

重新启动Visual Studio并重新编译。 :) 它将再次下载这些.zip文件(可能需要几分钟)。 这些zip包含相关的Android支持库。 因此,它会下载真正的库(与您引用的Xamarin.forms版本相关)。


0

更新Xamarin.Forms nuget包对我没有起作用。在我的情况下,必须更新Android Studio才能使Xamarin.Forms与Visual Studio配合使用。更新后,请重新启动Android Studio并再次查找更新,如果发现更新,请应用它们。您需要不断重复此操作,因为并非所有更新都可以一次安装。至少在我的情况下是这样。

我想这个方法有效,因为Android Studio包含了Visual Studio或Xamarin所需的Android SDK或其他组件。


这个问题是关于Visual Studio而不是Android Studio的,尽管两者都有“studio”这个词 :) - Foyzul Karim
1
看起来我需要编辑我的帖子以避免进一步的混淆:更新Android Studio使得Visual Studio中的Xamarin.Forms再次工作。我想这是因为Android Studio包含了Visual Studio或Xamarin所需的Android SDK或其他组件。 - bojank

0

大多数情况下,您需要将 Xamarin.Forms 包更新到最新版本

在所有项目中(以避免其他异常)

对于可移植、.Driod、.IOSWindows Phone(如果存在),则必须清理解决方案并关闭 Visual Studio,然后重新打开,最终一切都会变好。

但是,在某些情况下,您需要将Xamarin.Forms包降级为2.3而不是2.5.0.121934。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接