MvxTabsFragmentActivity
似乎没有在片段视图模型上调用Init()
方法,因为选中了标签(根本没有)。通过查看MvxTabsFragmentActivity的来源确认了这一点。
这有点令人讨厌,因为它打破了视图模型要实现的Init / Start模型(如果他们不知道它们被用作标签)。
对于与标记片段一起使用的视图模型,处理初始化(以及其他生命周期阶段)的推荐模式是什么?
答案 0 :(得分:1)
MvxTabsFragmentActivity
适用于预构建的视图模型 - 使用以下API传递ViewModel:
protected void AddTab<TFragment>(string tagAndSpecName, string tabName, Bundle args,
IMvxViewModel viewModel)
创建ViewModel的责任是调用者 - 如果调用者使用new
创建它们,则不会调用Init()
和Start()
。如果来电者使用IMvxViewModelLoader.Load()
,则会调用Init()
和Start()
。