1

MvvmCrossフレームワークを使用して、クロスプラットフォーム(iOS、Android、WP7)アプリケーションを構築しています。私は現在、TabHostアクティビティからAndroidで押された戻るボタンを処理しようとしています。TabHostアクティビティは(タブ選択にない)別のアクティビティから開始され、戻るボタンでアプリケーションを閉じたいのですが、戻るボタンを押すと前の画面に戻ります。

'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);
    }

アプリケーションを閉じるために呼び出すことができるメソッドはありますか?または、これをどのように処理するかについて、より良いアイデアがありますか?理想的には、このメソッドは、前に指定した3つのプラットフォーム間で複製できます。

前もって感謝します

4

1 に答える 1

3

3つのプラットフォームすべてでexitNowPleaseを呼び出すことはできないと思います。ほとんどのプラットフォームでは、Exit機能を提供できません。たとえば、WindowsPhone7で終了する唯一の方法は、未処理の例外をスローすることだと思います。

しかし、私はあなたがあなたが説明することを達成することができるはずだと思います:

  1. NoHistory =trueフラグを開始アクティビティ(タブホストの前のアクティビティ)に追加します。このNoHistory=trueフラグは、このアクティビティタイプをバックスタックに含めないことを意味します。
  2. 戻るボタンハンドラーを削除します。

プラットフォームは、説明したとおりに動作するはずです。


また、バックスタックをクリアするクロスプラットフォームについては、MvvmCrossのナビゲーションスタックに非表示のViewModelを追加する方法のClearTopの説明を参照してください。

于 2012-05-16T15:37:01.620 に答える