MonoDroid MVVMCross处理TabHost上按下的后退按钮

时间:2012-05-16 15:18:54

标签: android windows-phone-7 xamarin.ios xamarin.android mvvmcross

我正在使用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);
    }

是否有可以调用的方法来关闭应用程序?或者更好地了解如何处理这个问题?理想情况下,该方法可以在前面指定的三个平台上进行复制。

提前致谢

1 个答案:

答案 0 :(得分:3)

我认为我们不能在所有3个平台上复制exitNowPlease调用 - 因为大多数平台都不鼓励您提供Exit功能 - 例如我相信在WindowsPhone7中退出的唯一方法是抛出未处理的异常。

但是,我认为你应该能够实现你所描述的目标:

  1. 将NoHistory = true标志添加到开始活动 - tabhost之前的那个。此NoHistory=true标志表示不在后栈中包含此活动类型。
  2. 删除后退按钮处理程序。
  3. 然后平台应该按照您的描述行事。


    同样,对于跨平台清除后台堆栈,请参阅How to add an invisible ViewModel to the Navigation Stack in MvvmCross

    中的ClearTop说明