【问题标题】:System.InvalidCastException on Xamarin.Android with MvvmCross带有 MvvmCross 的 Xamarin.Android 上的 System.InvalidCastException
【发布时间】:2017-07-10 04:59:35
【问题描述】:

我的 Android 应用在生产环境中崩溃,我们的崩溃报告工具是 XamarinInsights,它会转储以下堆栈

at (wrapper castclass) System.Object:__castclass_with_cache (object,intptr,intptr) 在 MvvmCross.Droid.Support.V7.AppCompat.MvxAppCompatActivity1[TViewModel].get_ViewModel () [0x00006] in <76c7f3cdfddd459898d814608e83832e>:0 at AnyNameSpace.BaseActivity1[TViewModel].get_Context () [0x00000] 在 :0 在 AnyNameSpace.BaseActivity`1[TViewModel].OnCreate (Android.OS.Bundle bundle) [0x00015] in :0 在 AnyNameSpace.ProfileView.OnCreate (Android.OS.Bundle 包) [0x00000] 在 :0 在 Android.Support.V4.App.FragmentActivity.n_OnCreate_Landroid_os_Bundle_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_savedInstanceState) [0x00011] 在 :0 在(包装器动态方法) System.Object:dd3ad951-7481-46d2-860d-a9601d351cd2 (intptr,intptr,intptr)

这是引发异常的位置

    public class ProfileView : BaseAppActivity<ProfileViewModel>
    {
        protected override void OnCreate(Bundle bundle)
        {
             base.OnCreate(bundle);
             SetContentView(Resource.Layout.ProfileView);
             Title = string.Format("{0} | {1}", Title, Context.Version);
        }
    }

BaseAppActivity:BaseActivity

        protected override void OnCreate(Bundle bundle)
        {
       SupportRequestWindowFeature((int)WindowFeatures.IndeterminateProgress);
        base.OnCreate(bundle);
        RegisterBaseViewReceiver();

        if (Context != null)
        {
            Context.OnLoaded();
        }

和BaseActivity

    public class BaseActivity<TViewModel> : MvxAppCompatActivity<TViewModel>
    where TViewModel : BaseViewModel
    {
         public TViewModel Context
         {
            get
            {
                return (TViewModel)base.ViewModel;
            }
         }
    }

抛出异常

    return (TViewModel)base.ViewModel;

但我无法在发布和调试配置中重现此崩溃,我只能在崩溃报告系统中看到此错误。有什么想法吗?

【问题讨论】:

  • 仅供参考,GitHub Issues 上也对此问题进行了一些讨论。

标签: c# android xamarin mvvmcross


【解决方案1】:

这是 MvvmCross 中的 known bug,由从视图模型缓存中获取的无效模型引起。复制步骤在链接的 GitHub 问题中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-14
    • 1970-01-01
    • 1970-01-01
    • 2017-10-11
    • 1970-01-01
    • 2016-11-13
    • 1970-01-01
    相关资源
    最近更新 更多