MvvmCross.Exceptions.MvxException:无法创建安装程序实例

时间:2018-04-20 18:19:03

标签: c# visual-studio xamarin.android mvvmcross

我从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);

你有什么想法吗?

(如果您需要更多关于某事的信息/代码,请告诉我)

3 个答案:

答案 0 :(得分:3)

从您收到的错误来看,CreateSetupGitHub)中的MvxSetupSingleton方法看起来很糟糕。我在这里猜一点,但我认为RegisterSetupType<TMvxSetup>被调用的方式有问题(或者根本没有被调用) - 你可以找到这个方法在MvxSetupGitHub)中。追踪注册发生的位置,它给了我两个可能的位置: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示例代码可能有同样的缺陷。