Android MvvmCross-在视图模型层清除回退
我在视图模型层控制我的后退,因为我的应用程序的导航结构在iOS和Android中是相同的 我有一个最顶层视图模型的概念,它不应该存在倒退。因此,在显示这样的视图模型时,我希望关闭现有的视图模型Android MvvmCross-在视图模型层清除回退,android,xamarin,navigation,mvvmcross,viewmodel,Android,Xamarin,Navigation,Mvvmcross,Viewmodel,我在视图模型层控制我的后退,因为我的应用程序的导航结构在iOS和Android中是相同的 我有一个最顶层视图模型的概念,它不应该存在倒退。因此,在显示这样的视图模型时,我希望关闭现有的视图模型 IMvxNavigationService navigationService = GetFromSomewhere(); var existingViewModels = GetViewModelBackStack(); await navigationService.Navigate(newTop
IMvxNavigationService navigationService = GetFromSomewhere();
var existingViewModels = GetViewModelBackStack();
await navigationService.Navigate(newTopmostViewModel);
foreach (var viewModel in existingViewModels)
await navigationService.Close(viewModel);
然而,在Android中,上述代码导致我的应用程序被关闭
无论我在导航调用之前还是之后关闭,结果都是一样的
MvvmCross 5.7.0,单一活动,所有导航都是基于片段的。页面视图模型对应于全屏片段
我知道这可以在视图演示器层使用各种片段管理器进行,但我不想求助于这些,并在跨平台层保留尽可能多的逻辑
有什么建议或想法吗?我理解你为什么要把大部分逻辑放在核心位置。但是,每个平台处理导航和后台堆栈的方式不同,这就是表示逻辑属于平台层的原因 我以前也遇到过同样的问题,我的处理方法是创建演示提示。例如:ClearBackbackPresentationHint,由每个平台的演示者处理,并实现清除后台堆栈的逻辑