2017-02-11 4 views
3

Я пытаюсь соединить мои существующие Xamarin.Forms приложения с MvvmCross.Forms. К сожалению, я не могу пройти инициализацию.MvvmCross с Xamarin.Forms: Программа установки не называется

MainActivity.cs

[Activity(MainLauncher = true, Label = "Main Activity")] 
public class MainActivity : FormsApplicationActivity 
{ 
    protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 

     Forms.Init(this, bundle); 
     var app = new MvxFormsApp(); 
     LoadApplication(app); 

     var presenter = (MvxFormsDroidPagePresenter) Mvx.Resolve<IMvxViewPresenter>(); // Exception 
     presenter.MvxFormsApp = app; 

     Mvx.Resolve<IMvxAppStart>().Start(); 
    } 
} 

Setup.cs

public class Setup : MvxAndroidSetup 
{ 
    public Setup(Context applicationContext) : base(applicationContext) 
    { 
    } 

    protected override IMvxApplication CreateApp() 
    { 
     return new App(); 
    } 

    protected override IMvxAndroidViewPresenter CreateViewPresenter() 
    { 
     var presenter = new MvxFormsDroidPagePresenter(); 
     Mvx.RegisterSingleton<IMvxViewPresenter>(presenter); 
     return presenter; 
    } 
} 

Я думаю, проблема в том, что программа установки не называется вообще, даже не конструктор. Я прав? Что не так с кодом?

ответ

2

Самонастраивание выполняется в заставке.

Вы должны удалить MainLauncher = true из вашего MainActivity и добавить заставку как:

[Activity(MainLauncher = true 
    , Theme = "@style/Theme.Splash" 
    , NoHistory = true 
    , ScreenOrientation = ScreenOrientation.Portrait)] 
public class SplashScreen 
    : MvxSplashScreenActivity 
{ 
    public SplashScreen() 
     : base(Resource.Layout.SplashScreen) 
    { 
    } 

    private bool _isInitializationComplete; 
    public override void InitializationComplete() 
    { 
     if (!_isInitializationComplete) 
     { 
      _isInitializationComplete = true; 
      StartActivity(typeof(MainActivity)); 
     } 
    } 

    protected override void OnCreate(Android.OS.Bundle bundle) 
    { 
     Forms.Init(this, bundle); 
     Forms.ViewInitialized += (object sender, ViewInitializedEventArgs e) => 
     { 
      if (!string.IsNullOrWhiteSpace(e.View.StyleId)) 
      { 
       e.NativeView.ContentDescription = e.View.StyleId; 
      } 
     }; 

     base.OnCreate(bundle); 
    } 
} 

Если вам нужен рабочий пример, см наш пример приложения: https://github.com/xabre/xamarin-bluetooth-le/tree/master/Source/BLE.Client

+0

Для того, чтобы держать вещи простыми в В начале я избегал заставки :-) Проект также помог мне прийти еще на один шаг вперед. Danke schön :-) – core

+0

В MvvmCross 5.0 бутстрап без экрана заставки будет поддерживаться. –

Смежные вопросы