C# 如何在Xamarin的MVVMCross中实例化安装程序类?
我开始学习MVVM cross,在android应用程序中,我有一个闪屏课程:C# 如何在Xamarin的MVVMCross中实例化安装程序类?,c#,android,xamarin,mvvm,mvvmcross,C#,Android,Xamarin,Mvvm,Mvvmcross,我开始学习MVVM cross,在android应用程序中,我有一个闪屏课程: [Activity(MainLauncher = true, Label = "@string/app_name", Theme = "@style/Theme.Splash", NoHistory = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orien
[Activity(MainLauncher = true,
Label = "@string/app_name",
Theme = "@style/Theme.Splash",
NoHistory = true,
ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation,
ScreenOrientation = ScreenOrientation.Portrait)]
public class SplashScreen : MvxSplashScreenActivity
{
public SplashScreen() : base(Resource.Layout.SplashScreen)
{
}
}
这是设置类:
public class Setup : MvxAndroidSetup
{
protected Setup(Context applicationContext) : base(applicationContext)
{
}
protected override IMvxApplication CreateApp()
{
return null;
}
}
问题是调试器没有命中Setup类的构造函数,而是在初始屏幕的构造函数之后得到“未处理的异常”
编辑
我已经在PCL项目中定义了应用程序类:
public class App : MvxApplication
{
public override void Initialize()
{
base.Initialize();
}
还定义了AppStart:
public class AppStart : MvxNavigatingObject, IMvxAppStart
{
public async void Start(object hint = null)
{
//hardcoded login for this demo
//var userService = Mvx.Resolve<IUserDataService>();
//await userService.Login("gillcleeren", "123456");
ShowViewModel<MainViewModel>();
}
}
公共类AppStart:MvxNavigatingObject,IMvxAppStart
{
公共异步无效启动(对象提示=null)
{
//此演示的硬编码登录
//var userService=Mvx.Resolve();
//等待userService.Login(“gillcleeren”,“123456”);
ShowViewModel();
}
}
这个项目背后的主要原因是理解MVVM Cross所需和执行的代码序列,因此我提供了最少的代码,直到它成功运行而没有运行时错误。Update
我已经更彻底地阅读了你的代码,现在我可以看到这个问题了。您将设置
类的构造函数定义为受保护
,这使其在激活时不可见
在Android版的MvvmCross上,魔法发生在MvxAndroidSetupSingleton
类(请参阅)中,该类搜索您定义的设置
类型。FindSetupType
方法首先查找定义的Setup
类,然后在CreateSetup
方法Activator中查找。CreateInstance
用于构建Setup
实例。然而,使用的CreateInstance
方法变量只搜索public
构造函数,这意味着它找不到受保护的构造函数。结果是它无法构建设置
类并崩溃
原始答案
发生这种情况的原因是您没有定义MvvmCross
App类并初始化其他所需设置的Core
libary。我建议您从一个或开始查看,以了解在Xamarin.Android应用程序中使用MvvmCross需要什么。更新
我已经更彻底地阅读了你的代码,现在我可以看到这个问题了。您将设置
类的构造函数定义为受保护
,这使其在激活时不可见
在Android版的MvvmCross上,魔法发生在MvxAndroidSetupSingleton
类(请参阅)中,该类搜索您定义的设置
类型。FindSetupType
方法首先查找定义的Setup
类,然后在CreateSetup
方法Activator中查找。CreateInstance
用于构建Setup
实例。然而,使用的CreateInstance
方法变量只搜索public
构造函数,这意味着它找不到受保护的构造函数。结果是它无法构建设置
类并崩溃
原始答案
发生这种情况的原因是您没有定义MvvmCross
App类并初始化其他所需设置的Core
libary。我建议您从一个或开始查看,以了解使MvvmCross在Xamarin.Android应用程序中工作所必需的内容