【问题标题】:MvvmCross - Crash on device rotationMvvmCross - 设备旋转时崩溃
【发布时间】:2015-10-20 16:12:58
【问题描述】:

每当我旋转我的设备时都会发生崩溃。我正在使用 MvvmCross 4.0.0.beta-3,这是我的应用设置方式:

Setup.cs

    protected override IMvxAndroidViewPresenter CreateViewPresenter()
    {
        var customPresenter = new MvxFragmentsPresenter();
        Mvx.RegisterSingleton<IMvxFragmentsPresenter>(customPresenter);
        return customPresenter;
    }

ShellPage.cs

    public abstract class ActivityBase<TViewModel> : MvxCachingFragmentCompatActivity<TViewModel>
                                                     where TViewModel : MvxViewModel
    {
        .
        .
        .
    }

主页.cs

    [Activity(
    Label = "Home",
    MainLauncher = true,
    LaunchMode = LaunchMode.SingleTop)]
    public class ShellPage : ActivityBase<ShellPageViewModel>, IMvxFragmentHost
    {
        .
        .
        .
        public void RegisterFragment<TFragment, TViewModel>(string tag, Bundle args)
            where TFragment : IMvxFragmentView
            where TViewModel : IMvxViewModel
        {
            var customPresenter = Mvx.Resolve<IMvxFragmentsPresenter>();
            customPresenter.RegisterViewModelAtHost<TViewModel>(this);
            RegisterFragment<TFragment, TViewModel>(tag);
        }

        public bool Show(MvxViewModelRequest request, Bundle bundle)
        {
            if (request.ViewModelType == typeof(MenuContentViewModel))
            {
                ShowFragment(request.ViewModelType.Name, Resource.Id.navigation_frame, bundle);
                return true;
            }
            else
            {
                ShowFragment(request.ViewModelType.Name, Resource.Id.content_frame, bundle, true);
                return true;
            }
        }
        .
        .
        .   
    }

MainFragment.cs

    [MvxOwnedViewModelFragment]
    [Register("xxxxx.android.fragments.MainFragment")]
    public class MainFragment : MvxFragment<MainFragmentViewModel>
    {
        .
        .
        .
    }

我已经发布了上面的代码,以表明我正在使用 MvxCachingFragmentCompatActivity 作为基础活动,IMvxFragmentHost 因为我的 ShellPage 是唯一使用 NavigationDrawer 以及 [MvxOwnedViewModelFragment] 属性交换片段的页面在我的碎片上。

当我旋转时出现以下错误:

    10-20 12:10:02.470 I/MonoDroid( 6108): UNHANDLED EXCEPTION:
    10-20 12:10:02.471 I/MonoDroid( 6108): System.NullReferenceException: Object reference not set to an instance of an object
    10-20 12:10:02.471 I/MonoDroid( 6108): at Cirrious.MvvmCross.Droid.Support.AppCompat.MvxCachingFragmentCompatActivity.RestoreLookupFromSleep ()
    10-20 12:10:02.471 I/MonoDroid( 6108): at Cirrious.MvvmCross.Droid.Support.AppCompat.MvxCachingFragmentCompatActivity.OnPostCreate (Android.OS.Bundle)

有什么想法吗?

谢谢!

【问题讨论】:

    标签: xamarin xamarin.android mvvmcross


    【解决方案1】:

    今天发布的新 MvvmCross beta4 对此进行了多项修复。样本也有很多更新:https://github.com/MvvmCross/MvvmCross-AndroidSupport/tree/master/Samples

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多