最近MvvmCross 5を使用して新しいINavigationServiceを使用し始めました。MvvmCrossを使用してダイアログフラグメントを開くときにViewModelの複数のインスタンスが作成される
しかし、私は次のように私はまだカスタムプレゼンター(MvxFragmentsPresenter)に私の古い方法を使用していダイアログフラグメントを提示する新たな方法を見つけることができませんしてきた:
protected override void ShowFragment(MvxViewModelRequest request)
{
var currentActivity = Mvx.Resolve<IMvxAndroidCurrentTopActivity>().Activity;
var appActivity = currentActivity as MvvmCross.Droid.FullFragging.Views.MvxActivity;
if (appActivity != null)
{
var loaderService = Mvx.Resolve<IMvxViewModelLoader>();
var viewModel = loaderService.LoadViewModel(request, null);
if (request.ViewModelType == typeof(ExampleViewModel))
{
var dialogFragment = new ExampleDialogFragment();
dialogFragment.ViewModel = (ExampleViewModel)viewModel;
dialogFragment.SetStyle(DialogFragmentStyle.Normal, Resource.Style.MainDialogTheme);
dialogFragment.Show(appActivity.FragmentManager, ExampleDialogFragment.DialogTag);
return;
}
}
私は「問題このダイアログ・フラグメントにパラメータを渡す必要がある場合、ナビゲーション・サービスは正しいパラメータでビュー・モデルを作成しますが、フラグメントを表示すると、カスタム・プレゼンタはパラメータを持たない新しいビュー・モデルを構成し、新しいダイアログフラグメント。
私は、ローダーの代わりにMvxDefaultViewModelLocatorを使用しようとしましたが、これは同じことだけです。
var locatorService = Mvx.Resolve<IMvxViewModelLocator>();
var viewModel = locatorService.Load(request.ViewModelType, new MvxBundle(request.ParameterValues), null);
ダイアログフラグメントを開く新しい方法があるので、パラメータで作成されたビューモデルを割り当てることができますか?
ありがとうございます。