2017-07-04 5 views
0

ログインとログアウト機能を備えた私のアプリケーションのために、以下のナビゲーションを実装しました。 ハードウェアの[戻る]ボタンをブロックして再度ログインする方法。下記の流れである:ハードウェアをブロックする方法戻るボタンと再ログイン

1)ログインページがメインページでは、時にアプリケーションの起動

メインページ=新しいログイン();

2)が正常にログインした後、ユーザーは、メインメニューページ

NavigationPage NP =新しいNavigationPage(新メインメニュー())にナビゲートします。
App.current.MainPage = Np;メインメニューで

1)私は、iOSとAndroidの(しかし、iOS用のハードウェアボタンを無効にする方法は、現在のiPadとiPhone)には戻るボタンを持っていません。

This is what I got so far to stop back button. 

protected override bool OnBackButtonPressed() 
{   
    base.OnBackButtonPressed(); 

    return false 

} 

1a)デバイスがiOSとAndroid搭載端末であるかどうかを検出するにはどうすればよいですか? iOSには戻るボタンがないので、onBackButtonPressed()が適用されますか?

1b)base.OnBackButtonPressed()の前または後にfalseを返すかどうかを確認します。

2初めに)ユーザのログアウト

:ログイン - >のMainMenu:メインメニューページで、ユーザクリックログアウトボタン

void LogoutButton() 
{ 
    Navigate.PopModalAsync(new Login()); 
} 

これが初めてのログイン以来、すべての問題が発生します、メインページは、App.current.MainPage = Npです。

メインページ===とは何ですか?ユーザーが[ログアウト]ボタンをクリックすると

再度ログインするとどうなりますか?どのナビゲーション方法を使用してログインページに戻る必要がありますか?

おかげ

答えて

0

私は一度に複数の質問をすると、StackOverflowのガイドラインに従って、実際にはないことを言ってみましょう。ご質問にお答えするには:

1))私は、iOSとAndroidのハードウェアボタンをオーバーライドする(ただし、iOSの は現在のiPadとiPhoneには戻るボタンを持っていない方法。

オーバーライドする方法は、実際にハードウェア戻るボタンを停止します。ただし、ユーザーが戻す必要のあるすべてのメソッドを停止するわけではありません。

[Activity(Label = "MyApp", 
      Icon = "@drawable/ic_launcher", 
      MainLauncher = true, 
      NoHistory = true, 
      ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation, 
      ScreenOrientation = ScreenOrientation.Portrait)] 
public class LoginActivity : FormsAppCompatActivity { } 

NoHistory = true部分は興味深いものです:あなたが代わりに行うことができますことは、ログイン用に別のアクティビティを作成し、次でそれを飾るです。これはAndroidナビゲーションスタックには含まれないため、戻るボタンを使用して戻ることはできません。

1a)デバイスがiOSとAndroid搭載端末であるかどうかを検出するにはどうすればよいですか? iOSには 戻るボタンがないので、onBackButtonPressed()はそれに適用されますか?

OnBackButtonPressedはiOSでは何もしません。それは呼び出されません。初めに

2)ユーザのログアウト:ログイン - >メインメニュー:メインメニューページで、 ユーザクリックログアウトボタンこの原因は最初 時のログイン以来のいずれかの問題でしょう、今、メインページは何ですか?ユーザーが[ログアウト]ボタンをクリックすると ユーザーが再びログインするとどうなりますか?どちらのナビゲーション方法を にしてログインページに戻る必要がありますか?

必要に応じてMainPageを交換することができます。これは、戻るボタンの場合にも役立ちます。アプリの起動時に、ユーザーが既にログインしているかどうかを確認できます。彼がいる場合は、Current.MainPageをメインメニューページに設定します。そうでない場合は、ログインページに設定します。ユーザーが正常にログインすると、Current.MainPageをメインメニューページに設定します。メインページを設定すると、完全に新しいナビゲーションスタックが得られるので、戻るボタンではアプリはログインページに戻りません。

+0

10Qとご協力いただきありがとうございます。ケース(1):Login - > Successful、goto - > MainMenu(Btnコードを停止していない状態で)、ユーザーが戻るボタンを押すと、ログインページに移動します。これは正常ですか?ログインすると、NavigationPage NP = new NavigationPage(new MainMenu())、mainPage = NPを使用します。だからユーザーが戻るボタンをクリックすると、最後のページをポップアウトするためにどのスタックを使用するか分からない。これは正しいです? – MilkBottle

+0

はい、これは予想される動作です。アプリに戻る他に何もないときは、代わりに閉じます。ログインが成功すると、新しいナビゲーションスタックが作成されます。これは、あなたが押したすべてのページが戻るボタンを使用してポップできることを意味します。しかし、MainMenuページに移動すると、それ以上ポップすることができないので、アプリはおそらく閉じるでしょう。 –

+0

助けがあればこれを回答として記入してください。 –

関連する問題