2017-02-20 9 views
1

MVVM LightでXamarin Formsアプリケーションを使用しています。私はのNavigationServiceクラスを作成し、コンストラクタでそれを登録:MVVM Light - 既にINavigationService用に工場が登録されています

public App() 
    { 
     InitializeComponent(); 

     // Setup navigation service: 
     var navigationService = new NavigationService(); 
     // Configure pages: 
     navigationService.Configure(AppPages.MainPage, typeof(MainPage)); 
     navigationService.Configure(AppPages.DetailsPage, typeof(DetailsPage)); 
     // Register NavigationService in IoC container: 
     SimpleIoc.Default.Register<INavigationService>(() => navigationService); 

     // Create new Navigation Page and set MainPage as its default page: 
     var firstPage = new NavigationPage(new MainPage()); 
     // Set Navigation page as default page for Navigation Service: 
     navigationService.Initialize(firstPage); 
     // You have to also set MainPage property for the app: 
     MainPage = firstPage; 
    } 

私は、Android上でのバック矢印でアプリを終了し、私は例外持って、それを再オープンすると:

enter image description here

を私は別のアプローチを試してみました:登録解除しますもう一度サービスを登録するか、既にサービスが登録されているかどうかを確認しますが、まだ問題があります。私は助けに感謝します。

答えて

0

それは以下のようにする必要があります - それは正しく今働いている:

public App() 
    { 
     InitializeComponent(); 

     INavigationService navigationService; 

     if (!SimpleIoc.Default.IsRegistered<INavigationService>()) 
     { 
      // Setup navigation service: 
      navigationService = new NavigationService(); 

      // Configure pages: 
      navigationService.Configure(AppPages.MainPage, typeof(MainPage)); 
      navigationService.Configure(AppPages.DetailsPage, typeof(DetailsPage)); 

      // Register NavigationService in IoC container: 
      SimpleIoc.Default.Register<INavigationService>(() => navigationService); 
     } 

     else 
      navigationService = SimpleIoc.Default.GetInstance<INavigationService>(); 

     // Create new Navigation Page and set MainPage as its default page: 
     var firstPage = new NavigationPage(new MainPage()); 
     // Set Navigation page as default page for Navigation Service: 
     navigationService.Initialize(firstPage); 
     // You have to also set MainPage property for the app: 
     MainPage = firstPage; 
    } 

はINavigationServiceインタフェースにメソッドの下に追加してください:

void Configure(AppPages pageKey, Type pageType); 
void Initialize(NavigationPage page); 
関連する問題