MvvmCross - 设备旋转时崩溃
MvvmCross - Crash on device rotation
我每次旋转设备时都会崩溃。我正在使用 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
{
.
.
.
}
HomePage.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 作为基础 activity,IMvxFragmentHost 因为我的 ShellPage 是唯一使用 NavigationDrawer 交换片段 in/out 的页面,以及我的片段上的 [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)
有什么想法吗?
谢谢!
今天发布的新 MvvmCross beta4 对此进行了多项修复。样本也更新了很多:https://github.com/MvvmCross/MvvmCross-AndroidSupport/tree/master/Samples
我每次旋转设备时都会崩溃。我正在使用 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
{
.
.
.
}
HomePage.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 作为基础 activity,IMvxFragmentHost 因为我的 ShellPage 是唯一使用 NavigationDrawer 交换片段 in/out 的页面,以及我的片段上的 [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)
有什么想法吗?
谢谢!
今天发布的新 MvvmCross beta4 对此进行了多项修复。样本也更新了很多:https://github.com/MvvmCross/MvvmCross-AndroidSupport/tree/master/Samples