繁体   English   中英

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

[英]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);

你有什么想法?

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

从你得到的错误来看, MvxSetupSingletonGitHub )中的CreateSetup方法看起来很糟糕。 我在这里猜测一下,但我认为如何调用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);
    }
}

如果上述情况不明确,请查看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=trueActivityAttribute派生自MvxFormsAppCompatActivity<TViewModel>而不是MvxFormsAppCompatActivity<TMvxAndroidSetup, TApplication, TFormsApplication, TViewModel>看起来OP @Brugui示例代码可能有同样的缺陷。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM