Reputation: 17206
Here is my setup that registers my presenter:
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;
}
}
Here is my actual 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;
}
}
The exception I'm getting is the one in the title. I've tried cleaning, rebuilding, refreshing NuGet packages all to no avail.
I'm a bit frustrated and at a loss. I would appreciate any help.
Upvotes: 0
Views: 570
Reputation: 3559
The presenter name should be MvxAppCompatViewPresenter
. If yours is still MvxFragmentsPresenter
it means that one or more packages are outdated. Look at the Playground sample to see a full implementation: https://github.com/MvvmCross/MvvmCross/tree/develop/TestProjects/Playground
Upvotes: 2