1

我正在使用 MvvmCross 框架来构建一个跨平台(iOS、Android、WP7)应用程序。我目前正在尝试从 TabHost Activity 处理在 Android 上按下的后退按钮。TabHost Activity 将从另一个 Activity(不在 Tab 选择中)启动,我希望后退按钮关闭应用程序,但是当按下后退按钮时,我将返回上一个屏幕。

'NoHistory = "true"' 似乎在 TabHost 中不起作用。

我正在如下处理视图中的后退按钮按下,但不确定可以在 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);
    }

有没有可以调用的方法来关闭应用程序?或者对如何处理有更好的想法?理想情况下,该方法可以在前面指定的三个平台上复制。

提前致谢

4

1 回答 1

3

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

但是,我认为您应该能够通过以下方式实现您所描述的:

  1. 将 NoHistory=true 标志添加到开始活动 - tabhost 之前的那个。这个NoHistory=true标志意味着不要在后台堆栈中包含这个活动类型。
  2. 删除您的后退按钮处理程序。

然后该平台应该按照您所描述的方式运行。


另外对于跨平台清除后台堆栈,请参见如何在 MvvmCross 中向导航堆栈中添加不可见的 ViewModel 中的 ClearTop 说明

于 2012-05-16T15:37:01.620 回答