Xamarin.ios Xamarin表单:使用NavigationStack从登录屏幕关闭应用程序

Xamarin.ios Xamarin表单:使用NavigationStack从登录屏幕关闭应用程序,xamarin.ios,xamarin.forms,xamarin.android,navigation,Xamarin.ios,Xamarin.forms,Xamarin.android,Navigation,我在一个地方呆了一段时间,找不到任何帮助 场景: 我有一个Xamarin表单应用程序。当应用程序启动时,我会检查用户是否登录。如果用户已登录,我将打开主屏幕。但是如果用户没有登录,我会打开登录视图,显示为主屏幕顶部的Modal页面Navigation.PushModalAsync。 用户登录后,我将删除此页面并显示原始主页 问题 当用户按下手机上的Back按钮时,我希望应用程序退出。我该怎么做呢 注意:我使用导航堆栈来推送和弹出页面。在这种情况下,我想,我必须弹出所有的页面。但是我不知道怎么做。

我在一个地方呆了一段时间,找不到任何帮助

场景: 我有一个Xamarin表单应用程序。当应用程序启动时,我会检查用户是否登录。如果用户已登录,我将打开主屏幕。但是如果用户没有登录,我会打开登录视图,显示为主屏幕顶部的
Modal
页面
Navigation.PushModalAsync
。 用户登录后,我将删除此页面并显示原始主页

问题 当用户按下手机上的
Back
按钮时,我希望应用程序退出。我该怎么做呢


注意:我使用导航堆栈来推送和弹出页面。在这种情况下,我想,我必须弹出所有的页面。但是我不知道怎么做。

在您的
MainActivity.cs中添加以下内容:

public override void OnBackPressed()
{
    if (App.ImInLoginView)
    {
        Finish();
    }
    else
    {
        base.OnBackPressed();
    }
}
protected override bool OnBackButtonPressed()
{
    DependencyService.Get<IAndroidMethods>().CloseApp();
    return base.OnBackButtonPressed();
}
其中,
App.ImInLoginView
是我用作参考的标志(在我的App.cs内):

公共静态bool-ImInLoginView

我在OnAppearing和OnDisappearing事件中打开/关闭它


我希望这会有所帮助。

因为后退按钮只是Android设备上的一个问题,所以您可以覆盖
OnBackButtonPressed()
调用依赖项服务来关闭应用程序。在您的
登录页面中添加以下内容:

public override void OnBackPressed()
{
    if (App.ImInLoginView)
    {
        Finish();
    }
    else
    {
        base.OnBackPressed();
    }
}
protected override bool OnBackButtonPressed()
{
    DependencyService.Get<IAndroidMethods>().CloseApp();
    return base.OnBackButtonPressed();
}

现在,当您在登录页面上按下后退按钮时,应用程序将关闭。

您是指硬件后退按钮吗?如果是这样的话,这个问题只针对android,对吗?
Finish()在哪里定义的函数?它做什么?Finish()终止应用程序,它是活动的一个方法。谢谢。但cvanbeek的解决方案运行良好。我现在就坚持这一点。