![](/img/trans.png)
[英]MvvmCross.Exceptions.MvxException: Cannot replace MainPage root?
[英]MvvmCross.Exceptions.MvxException: Failed to create setup instance
我正在从MvvMCross 5.7升级到6.0.0。
当我尝试运行应用程序时,它会显示启动画面,之后,vs2017会给我以下错误:
MvvmCross.Exceptions.MvxException:无法创建安装程序实例
无论我将哪个文件设置为mainlauncher,错误始终都在同一行。
例:
using Android.App;
using Android.OS;
using MvvmCross.Droid.Support.V7.AppCompat;
using MvvmCross.Platforms.Android.Views;
namespace ClaveiSGApp.Droid.Views
{
[Activity(Label = "App", MainLauncher = true)]
public class MainView : MvxAppCompatActivity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.MainView);
}
}
}
错误总是在base.OnCreate(bundle);
你有什么想法?
(如果您需要更多关于某事的信息/代码,请告诉我)
从你得到的错误来看, MvxSetupSingleton
( GitHub )中的CreateSetup
方法看起来很糟糕。 我在这里猜测一下,但我认为如何调用RegisterSetupType<TMvxSetup>
(或者根本没有被调用) - 你可以在MvxSetup
( GitHub )中找到这个方法。 追踪注册发生的位置,它给了我两个可能的位置: MvxSplashScreenActivity<TMvxAndroidSetup, TApplication>
和MvxAndroidApplication<TMvxAndroidSetup, TApplication>
。
继续这种想法,并假设你在你的应用程序中使用SplashScreen
。 我建议更新您的SplashScreen
活动以继承MvxSplashScreenActivity<TMvxAndroidSetup, TApplication>
并检查是否有帮助 - 您还需要使您的SplashScreen
成为MainLauncher
。 您的代码可能如下所示:
[Activity(Label = "FirstDemo.Forms.Splash", Theme = "@style/MainTheme", MainLauncher = true, NoHistory = true)]
public class SplashScreen : MvxFormsSplashScreenAppCompatActivity<MvxFormsAndroidSetup<Core.App, App>, Core.App, App>
{
public SplashScreen()
: base(Resource.Layout.SplashScreen)
{
}
protected override void RunAppStart(Bundle bundle)
{
StartActivity(typeof(MainActivity));
base.RunAppStart(bundle);
}
}
如果上述情况不明确,请查看Nick Randolph (MvvmCross的撰稿人) 发表的博客文章 ,其中写有关于使用MvvmCross v6建立一个全新项目的文章。 我知道你正在升级 - 所以它不一样,但你至少可以检查你是否已经完成了运行应用程序所需的所有更改。 这是他的GitHub回购 ,带有我粘贴的示例代码
几天之后,搜索,看到gihub文件并与Nick Randolph谈话,@ Ale_lipa建议。
我注意到问题出在.Droid项目下的.csproj文件中。 它试图编译我手动从项目中删除的文件,甚至不存在。
我更改了它以匹配Nick在其存储库中的文件。
这是最后的样子:
<ItemGroup>
<Compile Include="SplashScreen.cs" />
<Compile Include="MainApplication.cs" />
<Compile Include="Resources\Resource.Designer.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Views\FirstView.cs" />
</ItemGroup>
现在一切正常。
我按照其他答案中引用的Nick Randolph的博客文章系列中的确切步骤,收到了与问题指定[ Failed to create setup instance
]相同的问题,但是在Xamarin.Forms文章中。 这是由于混合来自示例的不同部分的代码。 我的具体问题是因为声明MainLauncher=true
的ActivityAttribute
派生自MvxFormsAppCompatActivity<TViewModel>
而不是MvxFormsAppCompatActivity<TMvxAndroidSetup, TApplication, TFormsApplication, TViewModel>
看起来OP @Brugui示例代码可能有同样的缺陷。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.