【发布时间】:2017-11-17 00:48:06
【问题描述】:
- 我见过this,但解决方案不起作用。
- 在撰写本文时,我已更新到最新的 MvvmCross(实际上是最新的)5.4.2。
这是我的演示者注册设置:
public class Setup : MvxAppCompatSetup
{
public Setup(Context applicationContext)
: base(applicationContext)
{
}
protected override IEnumerable<Assembly> AndroidViewAssemblies => new List<Assembly>(base.AndroidViewAssemblies)
{
typeof(global::Android.Support.V7.Widget.Toolbar).Assembly
};
protected override IMvxApplication CreateApp()
{
Mvx.RegisterSingleton<INetworkManager>(() => new NetworkManagerAndroid(this.ApplicationContext));
return new App();
}
protected override void InitializeLastChance()
{
base.InitializeLastChance();
Mvx.RegisterSingleton<IAnalyticsService>(() => GoogleAnalyticsService.GetInstance());
}
protected override IMvxAndroidViewPresenter CreateViewPresenter()
{
var presenter = new MyAndroidPresenter(AndroidViewAssemblies);
Mvx.RegisterSingleton<IMvxAndroidViewPresenter>(presenter);
return presenter;
}
}
这是我的实际演示者:
public class MyAndroidPresenter : MvxFragmentsPresenter
{
public MyAndroidPresenter(IEnumerable<Assembly> AndroidViewAssemblies)
: base(AndroidViewAssemblies) // EXCEPTION HERE
{
}
protected override void ShowFragment(MvxViewModelRequest request)
{
if (GoHomeHandled(request))
return;
if (ShowModalHandled(request))
return;
base.ShowFragment(request);
}
protected override void ShowActivity(MvxViewModelRequest request, MvxViewModelRequest fragmentRequest = null)
{
if (GoHomeHandled(request))
return;
if (ShowModalHandled(request))
return;
base.ShowActivity(request, fragmentRequest);
}
private bool ShowModalHandled(MvxViewModelRequest request)
{
if (request.PresentationValues == null)
return false;
var viewsContainer = Mvx.Resolve<IMvxViewsContainer>();
var viewType = viewsContainer.GetViewType(request.ViewModelType);
var intent = new Intent(Application.Context, viewType);
if (request.PresentationValues.ContainsKey(Utilities.Constants.Navigation.ShowModal))
{
intent.AddFlags(ActivityFlags.NewTask | ActivityFlags.ClearTask);
Application.Context.StartActivity(intent);
return true;
}
else if (request.PresentationValues.ContainsKey(Utilities.Constants.Navigation.StayModal))
{
Application.Context.StartActivity(intent);
return true;
}
else
{
return false;
}
}
private bool GoHomeHandled(MvxViewModelRequest request)
{
if (request.PresentationValues == null)
return false;
if (request.PresentationValues.ContainsKey(Utilities.Constants.Navigation.ReturnHome))
{
var intent = new Intent(Application.Context, typeof(MainActivity));
intent.AddFlags(ActivityFlags.NewTask | ActivityFlags.ClearTask | ActivityFlags.TaskOnHome);
Application.Context.StartActivity(intent);
return true;
}
return false;
}
}
我得到的例外是标题中的那个。我试过清理、重建、刷新 NuGet 包都无济于事。
我有点沮丧和不知所措。我将不胜感激。
【问题讨论】:
-
你确定你更新/删除了所有旧的 android MvvmCross 的依赖项吗?我在 MvvmCross 的主存储库中的任何地方都找不到
MvxFragmentsPresenter。 mvvmcross.com/documentation/upgrading/…
标签: xamarin xamarin.android mvvmcross