微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

System.TypeLoadException:'类型为AndroidX.AppCompat.View.Menu.MenuItemImpl的VTable设置失败'

如何解决System.TypeLoadException:'类型为AndroidX.AppCompat.View.Menu.MenuItemImpl的VTable设置失败'

我正在尝试将Xamarin Android应用程序升级到AndroidX。我经历了迁移过程,项目构建没有错误,但是在运行时我遇到了IMenu的问题。我有一个活动叫OnCreateOptionsMenu(IMenu menu),当活动到达menu.FindItem时,抛出了System.TypeLoadException: 'VTable setup of type AndroidX.AppCompat.View.Menu.MenuItemImpl Failed'

        public override bool OnCreateOptionsMenu(IMenu menu)
        {
            MenuInflater.Inflate(Resource.Menu.common_menu,menu);
            menu.FindItem(Resource.Id.action_settings).SetVisible(false); // Exception happens here.
            return true;
        }

堆栈跟踪:

  at System.Reflection.RuntimeConstructorInfo.InternalInvoke (System.Object obj,System.Object[] parameters,System.Boolean wrapExceptions) [0x0002c] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/corlib/System.Reflection/RuntimeMethodInfo.cs:951 
  at System.Reflection.RuntimeConstructorInfo.DoInvoke (System.Object obj,System.Reflection.BindingFlags invokeAttr,System.Reflection.Binder binder,System.Globalization.CultureInfo culture) [0x00086] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/corlib/System.Reflection/RuntimeMethodInfo.cs:926 
  at System.Reflection.RuntimeConstructorInfo.Invoke (System.Reflection.BindingFlags invokeAttr,System.Globalization.CultureInfo culture) [0x00000] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/corlib/System.Reflection/RuntimeMethodInfo.cs:960 
  at System.Reflection.ConstructorInfo.Invoke (System.Object[] parameters) [0x00000] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/external/corefx/src/Common/src/CoreLib/System/Reflection/ConstructorInfo.cs:22 
  at Java.Interop.TypeManager.CreateProxy (System.Type type,system.intPtr handle,Android.Runtime.JniHandleOwnership transfer) [0x0001b] in <7d2292394f8c488b97f5bc2a0ac0240d>:0 
  at Java.Interop.TypeManager.CreateInstance (system.intPtr handle,Android.Runtime.JniHandleOwnership transfer,System.Type targettype) [0x00111] in <7d2292394f8c488b97f5bc2a0ac0240d>:0 
  at java.lang.Object.Getobject (system.intPtr handle,System.Type type) [0x00023] in <7d2292394f8c488b97f5bc2a0ac0240d>:0 
  at java.lang.Object._Getobject[T] (system.intPtr handle,Android.Runtime.JniHandleOwnership transfer) [0x00017] in <7d2292394f8c488b97f5bc2a0ac0240d>:0 
  at java.lang.Object.Getobject[T] (system.intPtr handle,Android.Runtime.JniHandleOwnership transfer) [0x00000] in <7d2292394f8c488b97f5bc2a0ac0240d>:0 
  at AndroidX.AppCompat.View.Menu.MenuBuilder.FindItem (system.int32 id) [0x00036] in <c5220b8e1f564a28bc774e534daebefd>:0 
  at NatureMapr.Mobile.Droid.Activities.BaseActivity.OnCreateOptionsMenu (Android.Views.IMenu menu) [0x00013] in C:\Projects\NatureMapr\NatureMapr.Mobile.Droid\Activities\BaseActivity.cs:73 
  at Android.App.Activity.n_OnCreateOptionsMenu_Landroid_view_Menu_ (system.intPtr jnienv,system.intPtr native__this,system.intPtr native_menu) [0x0000f] in <7d2292394f8c488b97f5bc2a0ac0240d>:0 
  at (wrapper dynamic-method) Android.Runtime.DynamicmethodNameCounter.8(intptr,intptr,intptr)

对于我如何找到问题的任何帮助,将不胜感激。

解决方法

对于遇到此错误的其他任何人,这似乎是一个或多个1.0.0-preview02 Xamarin AndroidX NuGet软件包存在的问题。升级到1.0.0.2软件包已解决了我的问题。

,

确保 Xamarin.AndroidX.AppCompact 已安装/更新

您可以使用 NuGet 包管理器安装/更新它

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。