1

既存のphonegapアプリケーション(iOS / Android)をWP7に移植しようとしています。「戻る」ボタンを処理するためのコードを除いて、すべてが正常に機能します。現在、戻るボタンのハンドラーがあります。これは、ロジックが要求した場合にページをリロードするか、ユーザーが「最初の」ページにいる場合にアプリケーションを閉じます。

コード:

if (doLogic) {
  // some update logic
} else  {
  // try to close app
  device.exitApp();
}

残念ながら、更新ロジックは機能しますが、アプリを閉じることができません。

4

4 に答える 4

2

wp7でアプリケーションを強制終了することはできません。 これは、Wp7の設計ガイドラインに含まれています。

ユーザーに押し戻してもらい、終了させたい場合はキャンセルしないでください。

于 2012-04-12T13:03:35.170 に答える
0

@TDaverで言及されているように、WindowsPhoneアプリケーションは閉じられることを意図していません。それらを閉じようとすると、開発ガイドラインに違反し、アプリケーションが拒否される可能性があります。

デフォルトのナビゲーションスタックメカニズムに任せてください。

于 2012-04-12T13:26:33.327 に答える
-1

アプリケーションを終了するには、どのページを表示していても、次のようになります。

 if (NavigationService.CanGoBack)
 {
     while (NavigationService.RemoveBackEntry() != null)
     {
         NavigationService.RemoveBackEntry();
     }
 }
于 2012-04-12T13:04:19.320 に答える
-1

現在のPhoneGapの実装では、戻るボタンハンドラーを追加しても、アプリケーションを戻るボタンで閉じることは不可能のようです。

CordovaView.xaml.csのpage_BackKeyPressメソッドを変更することにより、PhoneGapを少しハッキングすることでこれを解決しました

if(OverrideBackButton)をに変更しました

    string cancel = "false";
    if (OverrideBackButton)
    {
        try
        {
            cancel = CordovaBrowser.InvokeScript("shouldCancelBackButton") as string;
            Console.WriteLine("CancelBackButton response: " + cancel);
        }
        catch (Exception ex)
        {
            Console.WriteLine("Exception while checking for backbutton cancel into cordova view: " + ex.Message);
        } 

        try
        {
            e.Cancel = cancel == "true"; 
            CordovaBrowser.InvokeScript("CordovaCommandResult", new string[] { "backbutton" });
        }
        catch (Exception ex)
        {
            Console.WriteLine("Exception while invoking backbutton into cordova view: " + ex.Message);
        }
    }

これで、shouldCancelBackButton JS関数をページに追加し、状態の抑制に基づいて、デフォルトの戻るボタンハンドラーの動作を実行できます。

おそらくそれは最善の解決策ではありませんが、残念ながら、PhoneGapの内部に慣れる時間がありません。

于 2012-04-19T13:34:52.043 に答える