Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android MvvmCross-在视图模型层清除回退_Android_Xamarin_Navigation_Mvvmcross_Viewmodel - Fatal编程技术网

Android MvvmCross-在视图模型层清除回退

Android MvvmCross-在视图模型层清除回退,android,xamarin,navigation,mvvmcross,viewmodel,Android,Xamarin,Navigation,Mvvmcross,Viewmodel,我在视图模型层控制我的后退,因为我的应用程序的导航结构在iOS和Android中是相同的 我有一个最顶层视图模型的概念,它不应该存在倒退。因此,在显示这样的视图模型时,我希望关闭现有的视图模型 IMvxNavigationService navigationService = GetFromSomewhere(); var existingViewModels = GetViewModelBackStack(); await navigationService.Navigate(newTop

我在视图模型层控制我的后退,因为我的应用程序的导航结构在iOS和Android中是相同的

我有一个最顶层视图模型的概念,它不应该存在倒退。因此,在显示这样的视图模型时,我希望关闭现有的视图模型

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,由每个平台的演示者处理,并实现清除后台堆栈的逻辑