ビュー内に動的に作成されたフラグメントを持つ単一のアクティビティを作成しようとしています。ActivityViewModel と FragmentViewModel があり、対応するビューとレイアウトがあります (ActivityView にはフラグメントをホストする FrameLayout があります)。フラグメントは、ActivityViewModel.Start メソッド内から ShowViewModel<> を呼び出すことによって表示されます。http://enginecore.blogspot.ro/2013/06/more-dynamic-android-fragments-with.htmlで説明されているように、CustomePresenter を使用しています。
コールドスタートから再開後も正常に動作します。ただし、アクティビティが破棄された後は機能しません。
これは、この問題のある状況で発生するシーケンスです。アクティビティが作成され、Mvx がキャッシュされた ViewModel を見つけてアクティビティにアタッチします。ViewModel はキャッシュされているため、Start メソッドを起動しません (フラグメント作成をトリガーします)。それはいいです。ただし、次のステップでは、Android はフラグメントを再作成しますが、関連付けられた ViewModel を取得しません。これは、CustomPresenter (フラグメントの作成時にそれを処理する) も MvxFragment.OnCreate も作成しないためです (MvxActivity メカニズムのように)。したがって、ViewModel のないフラグメントを取得します。
MvxActivity のように、MvxFragemnt が作成時に独自の ViewModel を作成するのは良くないのでしょうか? さらに、Save、Resume (隣接する ViewModel のメソッドの呼び出し) を処理する必要があります。または、これを間違った方法で処理しているか、何かが欠けている可能性があります。