मैं MvvMCross 5.7 से 6.0.0 में अपग्रेड कर रहा हूं।

जब मैं ऐप चलाने की कोशिश करता हूं, तो यह स्प्लैश स्क्रीन दिखाता है और उसके ठीक बाद, बनाम2017 मुझे निम्न त्रुटि देता है:

MvvmCross.Exceptions.MvxException: सेटअप इंस्टेंस बनाने में विफल

त्रुटि हमेशा एक ही पंक्ति में होती है, इससे कोई फर्क नहीं पड़ता कि मैं कौन सी फ़ाइल मेनलांचर के रूप में सेट करता हूं।

उदाहरण:

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
Brugui 20 अप्रैल 2018, 21:19

3 जवाब

सबसे बढ़िया उत्तर

मैंने कुछ दिनों के बाद, गीहब फाइलों को खोजना, देखना और निक रैंडोल्फ के साथ बात करना, जैसा कि @Ale_lipa ने सुझाव दिया था।

मैंने देखा कि समस्या .Droid प्रोजेक्ट के अंतर्गत .csproj फ़ाइल में थी। यह उन फ़ाइलों को संकलित करने का प्रयास कर रहा था जिन्हें मैंने प्रोजेक्ट से मैन्युअल रूप से हटा दिया था और यहां तक ​​​​कि अस्तित्व में भी नहीं था।

मैंने इसे उस फ़ाइल से मिलान करने के लिए बदल दिया है जो निक के पास उसकी रिपॉजिटरी

यह अंतिम रूप है:

<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>

अब सब कुछ ठीक काम करता है।

1
Brugui 24 अप्रैल 2018, 12:15

आपको जो त्रुटि मिल रही है, उससे ऐसा लगता है कि CreateSetup विधि में MvxSetupSingleton (GitHub)। मैं यहां थोड़ा अनुमान लगा रहा हूं, लेकिन मैं यह मानूंगा कि RegisterSetupType<TMvxSetup> को कैसे कॉल किया जा रहा है (या इसे बिल्कुल भी नहीं कहा जा रहा है) में कुछ गड़बड़ है - आप इस विधि को MvxSetup में पा सकते हैं (< a href="https://github.com/MvvmCross/MvvmCross/blob/082ce799a17f31839b7c1221aacc4737942bc58e/MvvmCross/Core/MvxSetup.cs" rel="nofollow noreferrer">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);
    }
}

यदि उपरोक्त स्पष्ट नहीं है, तो निक रैंडोल्फ़ द्वारा ब्लॉग पोस्ट (MvvmCross के लिए एक योगदानकर्ता), जो MvvmCross v6 के साथ एक बिल्कुल नया प्रोजेक्ट स्थापित करने के बारे में लिखता है। मुझे पता है कि आप अपग्रेड कर रहे हैं - इसलिए यह वही नहीं है, लेकिन आप कम से कम जांच सकते हैं कि क्या आपने ऐप चलाने के लिए आवश्यक सभी बदलाव किए हैं। यह रहा उनका GitHub रेपो , नमूना कोड के साथ जिसे मैंने चिपकाया था

3
Mikolaj Kieres 26 अप्रैल 2018, 05:36

मैंने ब्लॉग पर सटीक चरणों का पालन किया निक रैंडोल्फ़ द्वारा पोस्ट सीरीज़ को अन्य उत्तरों में संदर्भित किया गया, और उसी समस्या को प्राप्त किया जैसा कि प्रश्न निर्दिष्ट करता है [Failed to create setup instance] लेकिन Xamarin.Forms लेख में। यह उदाहरण के एक अलग हिस्से से कोड मिलाने के कारण था। मेरा विशिष्ट मुद्दा इसलिए था क्योंकि ActivityAttribute ने MvxFormsAppCompatActivity<TMvxAndroidSetup, TApplication, TFormsApplication, TViewModel> के बजाय MvxFormsAppCompatActivity<TViewModel> से प्राप्त MainLauncher=true घोषित किया था, ऐसा लगता है कि OP @Brugui नमूना कोड में एक ही दोष हो सकता है।

1
Steven Bone 16 मई 2018, 01:47