我从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);
你有什么想法吗?
(如果您需要更多关于某事的信息/代码,请告诉我)
答案 0 :(得分:3)
从您收到的错误来看,CreateSetup
(GitHub)中的MvxSetupSingleton
方法看起来很糟糕。我在这里猜一点,但我认为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);
}
}
如果上述情况不明确,请查看blog post by Nick Randolph(MvvmCross的撰稿人),其中写有关于使用MvvmCross v6设置全新项目的信息。我知道您正在升级 - 所以它不一样,但您至少可以检查是否已经完成了运行应用程序所需的所有更改。这是his GitHub repo,其中包含我粘贴的示例代码
答案 1 :(得分:1)
几天后,搜索,看到gihub文件并与Nick Randolph交谈@Ale_lipa建议。
我注意到问题出在.Droid项目下的.csproj文件中。它试图编译我手动从项目中删除的文件,甚至不存在。
我更改了它以匹配Nick在his repository中的文件。
这是最后一眼:
<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>
现在一切正常。
答案 2 :(得分:1)
我按照其他答案中引用的blog post series by Nick Randolph上的确切步骤,收到了与问题指定[Failed to create setup instance
]相同的问题,但是在Xamarin.Forms文章中。这是由于混合来自示例的不同部分的代码。我的具体问题是因为声明ActivityAttribute
的{{1}}派生自MainLauncher=true
而不是MvxFormsAppCompatActivity<TViewModel>
看起来OP @Brugui示例代码可能有同样的缺陷。