我正在尝试在其视图中使用动态创建的片段进行单个活动。我有一个 ActivityViewModel 和一个 FragmentViewModel 以及匹配的视图和布局(ActivityView 有一个 FrameLayout 来托管片段)。通过从 ActivityViewModel.Start 方法中调用 ShowViewModel<> 来显示片段。我正在使用 http://enginecore.blogspot.ro/2013/06/more-dynamic-android-fragments-with.html 中所述的CustomePresenter。
它从冷启动和恢复后都可以正常工作。但是,在活动被破坏后它将不起作用。
这是在这种有问题的情况下发生的顺序:创建 Activity,Mvx 找到缓存的 ViewModel 并将其附加到 Activity。由于 ViewModel 被缓存,它不会触发 Start 方法(触发片段创建)。没关系。但是在下一步中,Android 会重新创建片段,但它不会获得其关联的 ViewModel,因为 CustomPresenter (在创建片段时会处理该片段)或 MvxFragment.OnCreate 都不会创建它 - 就像 MvxActivity 机制一样。因此我得到了一个没有 ViewModel 的片段。
所以我想知道,如果 MvxFragemnt 在创建时像 MvxActivity 那样创建自己的 ViewModel 应该不是很好吗?此外,它应该处理 Save、Resume(调用相邻 ViewModel 的方法)。或者我可能以错误的方式处理这个问题或遗漏了一些东西。