Xamarin.forms 启动Prism 7应用程序时,应用程序构造函数中出现Null异常
我将xamarin表单应用程序升级为使用prism 7。当应用程序启动(android项目)时,它会在这条线上崩溃Xamarin.forms 启动Prism 7应用程序时,应用程序构造函数中出现Null异常,xamarin.forms,prism,Xamarin.forms,Prism,我将xamarin表单应用程序升级为使用prism 7。当应用程序启动(android项目)时,它会在这条线上崩溃 public App(IPlatformInitializer initializer = null) : base(initializer) { } 错误是 System.ArgumentNullException: Value cannot be null. Parameter name: path1 这种情况发生在预发行版以及myget:7.0.0.343-ci的最新版本
public App(IPlatformInitializer initializer = null) : base(initializer) { }
错误是
System.ArgumentNullException: Value cannot be null.
Parameter name: path1
这种情况发生在预发行版以及myget:7.0.0.343-ci的最新版本中
我在prism 6.3中没有遇到这个错误
App.xaml.cs:
using Prism;
using Prism.Ioc;
using Prism.Mvvm;
using Prism.Ninject;
using SunBaseApp.Helpers;
using Xamarin.Forms;
[assembly: Xamarin.Forms.Xaml.XamlCompilation(Xamarin.Forms.Xaml.XamlCompilationOptions.Compile)]
namespace SunBaseApp
{
public partial class App : PrismApplication
{
public App() : this(null) { }
public App(IPlatformInitializer initializer = null) : base(initializer) { }
protected override async void OnInitialized()
{
InitializeComponent();
await NavigationService.NavigateAsync("/NavigationPage/LoginPage");
}
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
var cont = containerRegistry.GetKernel();
cont.Bind<IAppSettings>().To<AppSettings>().InSingletonScope();
cont.Bind<IDataService>().To<DataService>().InSingletonScope();
containerRegistry.RegisterForNavigation<NavigationPage>();
containerRegistry.RegisterForNavigation<LoginPage, LoginPageModel>();
containerRegistry.RegisterForNavigation<MainPage, MainPageModel>();
containerRegistry.RegisterForNavigation<SettingsEditPage, SettingsEditPageModel>();
containerRegistry.RegisterForNavigation<StatPage, StatPageModel>();
containerRegistry.RegisterForNavigation<WebsiteListPage, WebsiteListPageModel>();
containerRegistry.RegisterForNavigation<WebsiteEditPage, WebsiteEditPageModel>();
}
}
}
非常感谢您的任何想法。看来Ninject在Droid上运行时遇到了一些问题。我建议您更新您的项目以使用另一个更稳定的容器。还请记住,使用最新版本,您不需要直接引用容器,除非您需要更高级的注册。您所拥有的基本功能可以简单地注册为:
containerRegistry.RegisterSingleton<IAppSettings, AppSettings>();
containerRegistry.RegisterSingleton();
谢谢你,丹!我切换到DryIoc,它又开始工作了。还应用了更简单的注册。我有与Ed S完全相同的问题。您是否可以给出任何其他提示来代替切换IoC容器@Dan S.@Tobiasheel Ninject不再是PrismDo的受支持容器您有任何来源吗?听起来我不应该开始使用Prism。我有什么确切的来源吗?
using Android.App;
using Android.Content.PM;
using Android.OS;
using Acr.UserDialogs;
using Prism;
using Prism.Ioc;
namespace SunBaseApp.Droid
{
[Activity(Label = "SunBaseApp", Icon = "@drawable/icon2", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnCreate(Bundle bundle)
{
ToolbarResource = Resource.Layout.toolbar;
TabLayoutResource = Resource.Layout.tabs;
base.OnCreate(bundle);
global::Xamarin.Forms.Forms.Init(this, bundle);
LoadApplication(new App(new AndroidInitializer()));
UserDialogs.Init(this);
}
public class AndroidInitializer : IPlatformInitializer
{
public void RegisterTypes(IContainerRegistry containerRegistry)
{
}
}
}
}
containerRegistry.RegisterSingleton<IAppSettings, AppSettings>();