我正在使用MvvmCross框架来构建跨平台(iOS,Android,WP7)应用程序。我目前正在尝试处理从TabHost活动在Android上按下的后退按钮。 TabHost活动将从另一个活动(不在选项卡选项中)启动,我希望后退按钮关闭应用程序,但是当按下后退按钮时,我将返回上一个屏幕。
'NoHistory =“true”'似乎在TabHost中不起作用。
我在View中处理我的后退按钮按下,但不确定在ViewModel中可以调用什么来关闭应用程序。
public override bool OnKeyDown(Android.Views.Keycode keyCode, Android.Views.KeyEvent e)
{
if (keyCode == Keycode.Back)
{
return this.ViewModel.CloseThisApplication();
}
return base.OnKeyDown(keyCode, e);
}
是否有可以调用的方法来关闭应用程序?或者更好地了解如何处理这个问题?理想情况下,该方法可以在前面指定的三个平台上进行复制。
提前致谢
答案 0 :(得分:3)
我认为我们不能在所有3个平台上复制exitNowPlease调用 - 因为大多数平台都不鼓励您提供Exit功能 - 例如我相信在WindowsPhone7中退出的唯一方法是抛出未处理的异常。
但是,我认为你应该能够实现你所描述的目标:
NoHistory=true
标志表示不在后栈中包含此活动类型。然后平台应该按照您的描述行事。
同样,对于跨平台清除后台堆栈,请参阅How to add an invisible ViewModel to the Navigation Stack in MvvmCross
中的ClearTop说明