Что я сделал не так при настройке MvvmCross 6.0? - PullRequest
0 голосов
/ 01 мая 2018

Я новичок в MvvmCross 6.0 и Xamarin.

Я пытаюсь следовать учебнику , что для MvvmCrosss 5.5

Я последовал объяснению,

  1. Создан App.xaml как MvxFormsApplication
    <?xml version="1.0" encoding="utf-8" ?>
<core:MvxFormsApplication xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:core="clr-namespace:MvvmCross.Forms.Core;assembly=MvvmCross.Forms"
             x:Class="App3.App">
</core:MvxFormsApplication>
  1. CoreApp.cs как MvxApplication и запускает RegisterAppStart (); в моем переопределенном Initialize ()
public class CoreApp : MvxApplication
    {

        public override void Initialize()
        {
            CreatableTypes()
                .EndingWith("Service")
                .AsInterfaces()
                .RegisterAsLazySingleton();

            CreatableTypes()
                .EndingWith("Client")
                .AsInterfaces()
                .RegisterAsLazySingleton();

            // register the appstart object
            RegisterAppStart<MainPageViewModel>();
        }
    }
  1. MainPageViewModel для унаследованной MvxViewModel
public class MainPageViewModel : MvxViewModel
    {
    }
  1. Просмотр того, что создано как MvxContentPage с типом MainPageViewModel

<Label Text="Welcome to Xamarin.Forms!" 
       VerticalOptions="Center" 
       HorizontalOptions="Center" />

  1. Удалил MainActivity и создал файл с именем MainApplication.cs следующим образом
[Activity(Label = "MvvmcrossGettingStarted", Icon = "@drawable/icon", Theme = "@style/MainTheme", MainLauncher = true,

ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)] открытый класс MainActivity: MvxFormsAppCompatActivity { защищенное переопределение void OnCreate (Bundle bundle) { TabLayoutResource = Resource.Layout.Tabbar; ToolbarResource = Resource.Layout.Toolbar;

            base.OnCreate(bundle);

            var startup = Mvx.Resolve<IMvxAppStart>();
            startup.Start();
            InitializeForms(bundle);

        }
    }


    public class Setup : MvxFormsAndroidSetup
    {
        public Setup():base()
        {

        }

        protected override IEnumerable<Assembly> AndroidViewAssemblies => new List<Assembly>(base.AndroidViewAssemblies
            .Union(new[] { typeof(App).GetTypeInfo().Assembly })
            .Except(new[] { this.GetType().Assembly })
        );

        protected override Application CreateFormsApplication()
        {
            return new App();
        }


        protected override IMvxApplication CreateApp() => new CoreApp();
    }

Однако то, что я запустил приложение, дает мне исключение null, говоря, что параметр "bundle" является нулем в методе OnCreated.

P.S. В руководстве упоминается создание файла Setup.cs, но я понятия не имею, как этот файл Setup.cs запускается кодом .... Я не вижу, куда это ссылается.

1 Ответ

0 голосов
/ 01 мая 2018

Я не уверен, почему вы смотрите учебник версии 5.5 при работе с v 6.0. Попробуйте следовать пошаговое руководство , от того же автора, но для версии 6.0

Возможно, вы также захотите скачать образец Ника из его репозитория GitHub , чтобы проверить, как все работает.

...