2017-11-17 12 views
0
  • 私はthisを見ましたが、解決策は機能していません。
  • 私は最新のMvvmCross(実際に最新のものすべて)に更新しましたが、これはこの執筆時点で5.4.2です。ここで

私のプレゼンターを登録する私の設定です:ここではMvvmCross 5.4カスタムプレゼンター:メソッド 'MvvmCross.Droid.Views.MvxAndroidViewPresenter..ctor'が見つかりません

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

    protected override IEnumerable<Assembly> AndroidViewAssemblies => new List<Assembly>(base.AndroidViewAssemblies) 
    { 
     typeof(global::Android.Support.V7.Widget.Toolbar).Assembly 
    }; 

    protected override IMvxApplication CreateApp() 
    { 
     Mvx.RegisterSingleton<INetworkManager>(() => new NetworkManagerAndroid(this.ApplicationContext)); 

     return new App(); 
    } 

    protected override void InitializeLastChance() 
    { 
     base.InitializeLastChance(); 
     Mvx.RegisterSingleton<IAnalyticsService>(() => GoogleAnalyticsService.GetInstance()); 
    } 

    protected override IMvxAndroidViewPresenter CreateViewPresenter() 
    { 
     var presenter = new MyAndroidPresenter(AndroidViewAssemblies); 
     Mvx.RegisterSingleton<IMvxAndroidViewPresenter>(presenter); 

     return presenter; 
    } 
} 

は私の実際のプレゼンターである:

public class MyAndroidPresenter : MvxFragmentsPresenter 
{ 
    public MyAndroidPresenter(IEnumerable<Assembly> AndroidViewAssemblies) 
     : base(AndroidViewAssemblies) // EXCEPTION HERE 
    { 
    } 

    protected override void ShowFragment(MvxViewModelRequest request) 
    { 
     if (GoHomeHandled(request)) 
      return; 

     if (ShowModalHandled(request)) 
      return; 

     base.ShowFragment(request); 
    } 

    protected override void ShowActivity(MvxViewModelRequest request, MvxViewModelRequest fragmentRequest = null) 
    { 
     if (GoHomeHandled(request)) 
      return; 

     if (ShowModalHandled(request)) 
      return; 


     base.ShowActivity(request, fragmentRequest); 
    } 

    private bool ShowModalHandled(MvxViewModelRequest request) 
    { 
     if (request.PresentationValues == null) 
      return false; 

     var viewsContainer = Mvx.Resolve<IMvxViewsContainer>(); 
     var viewType = viewsContainer.GetViewType(request.ViewModelType); 
     var intent = new Intent(Application.Context, viewType); 

     if (request.PresentationValues.ContainsKey(Utilities.Constants.Navigation.ShowModal)) 
     { 
      intent.AddFlags(ActivityFlags.NewTask | ActivityFlags.ClearTask); 

      Application.Context.StartActivity(intent); 
      return true; 
     } 
     else if (request.PresentationValues.ContainsKey(Utilities.Constants.Navigation.StayModal)) 
     { 
      Application.Context.StartActivity(intent); 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 

    private bool GoHomeHandled(MvxViewModelRequest request) 
    { 
     if (request.PresentationValues == null) 
      return false; 

     if (request.PresentationValues.ContainsKey(Utilities.Constants.Navigation.ReturnHome)) 
     { 
      var intent = new Intent(Application.Context, typeof(MainActivity)); 
      intent.AddFlags(ActivityFlags.NewTask | ActivityFlags.ClearTask | ActivityFlags.TaskOnHome); 

      Application.Context.StartActivity(intent); 

      return true; 
     } 

     return false; 
    } 
} 

私は取得しています例外は、タイトルの1です。私はクリーニング、再構築、NuGetパッケージのリフレッシュを試みました。

私は少し挫折しました。助けていただければ幸いです。

+0

MvvmCrossのすべての古いアンドロイドの依存関係を更新/削除してもよろしいですか? MvvmCrossのメインリポジトリのどこでも 'MvxFragmentsPresenter'が見つかりません。 https://www.mvvmcross.com/documentation/upgrading/upgrade-to-mvvmcross-50?scroll=1300 – Pilatus

答えて

2

プレゼンター名はMvxAppCompatViewPresenterである必要があります。あなたがまだMvxFragmentsPresenterの場合は、1つ以上のパッケージが古くなっていることを意味します。 Playgroundサンプルを見て、完全な実装を確認してください:https://github.com/MvvmCross/MvvmCross/tree/develop/TestProjects/Playground

+0

パッケージのキャッシュに問題がありましたか?私はVS内のすべてのパッケージとパッケージフォルダ内のディスクをチェックしました。それらはすべて最新のものでした(以前のものは5.1.1でした)。手動ですべてをディスクから削除し、パッケージのリストアを実行して終了しました。ありがとう! –

関連する問題