2017-10-24 25 views
0

私はいつかどこかで立ち往生していて、何の助けも見つけられません。Xamarinフォーム:NavigationStackを使用してログイン画面からアプリケーションを閉じる

シナリオ: 私はXamarinフォームアプリを持っています。アプリが起動すると、ユーザーがログインしているかどうかを確認します。ユーザーがログインしている場合、私はメインスクリーンを開きます。しかし、ユーザーがログインしていない場合は、メイン画面の上にModalページNavigation.PushModalAsyncというログインビューを開きます。 ユーザーがログインすると、このページが削除され、元のメインページが表示されます。

問題 ユーザーが電話でBackボタンを押すと、アプリケーションを終了します。どうやってやるの。

注:ナビゲーションスタックを使用してページをプッシュしてポップします。この場合、私はすべてのページをポップしなければならないと思います。しかし、私はどのように把握することはできません。私は/にそれを回す

public static bool ImInLoginView;

App.ImInLoginViewは、私は(私のApp.cs内側)を基準として使用するフラグです

public override void OnBackPressed() 
{ 
    if (App.ImInLoginView) 
    { 
     Finish(); 
    } 
    else 
    { 
     base.OnBackPressed(); 
    } 
} 

:あなたのMainActivity.csこれを追加インサイド

+1

ハードウェア戻るボタンを意味しますか?もしそうなら、問題はアンドロイドにしかないのでしょうか? –

答えて

1

戻るボタンはAndroidデバイスの問題であるため、OnBackButtonPressed()を無効にして、依存関係サービスを呼び出してアプリケーションを終了できます。私は私が私のMyApp.Droidプロジェクトで実装私IAndroidMethodsインターフェイスのオフに私の依存関係サービスを作っ

protected override bool OnBackButtonPressed() 
{ 
    DependencyService.Get<IAndroidMethods>().CloseApp(); 
    return base.OnBackButtonPressed(); 
} 

[assembly: Xamarin.Forms.Dependency(typeof(AndroidMethods))] 
namespace MyApp.Droid 
{ 
    public class AndroidMethods : IAndroidMethods 
    { 
     public void CloseApp() 
     { 
      //This closes the Android app 
      Android.OS.Process.KillProcess(Android.OS.Process.MyPid()); 
     } 
    } 
} 

今すぐ戻るボタンがログインから押されたときに、あなたのLoginPageでは、これを追加ページを閉じると、アプリは終了します。

0

OnAppearingおよびOnDisappearingイベントでオフにします。

こちらがお役に立てば幸いです。

+0

'Finish();'関数はどこに定義されていますか?それは何をするためのものか? –

+0

Finish()アプリケーションを終了し、アクティビティのメソッドです。 –

+0

ありがとうございます。しかし、cvanbeekのソリューションは正常に動作しています。私は今のところそれに固執する。 –

関連する問題