如何在 Xamarin 跨平台应用中识别后退按钮事件(Xamarin.Forms)

5

有没有办法知道在 Android 手机上按下“返回”按钮时触发的事件?当用户按下此按钮时,我想退出游戏并为其添加一些功能,而这是在 Xamarin.Forms 中完成的。

我已经搜索了一些关于此问题的信息,但是找到的都是有关于 Xamarin.Android “返回”按钮的文章,而非针对 Xamarin.Forms。

由于我对 Xamarin.Forms 相对较新,请帮忙解决。

public override void OnBackPressed()
{
    //base.OnBackPressed();
}

我希望在Xamarin.Forms中实现相同的功能。需要一些帮助,伙计们。


你可以在 MainActivity.cs 中的 Android 上使用 OnBackPressed。 - Dave Rincon
2个回答

7
如果您所说的“Xamarin跨平台”是指Xamarin.Forms,那么可以使用OnBackButtonPressed事件。根据文档说明:

当按下硬件返回按钮时触发的事件。在iOS上不会触发此事件。

只需在NavigationPage上覆盖此事件即可:

protected override bool OnBackButtonPressed()
{
    // Do your magic here
    return true;
}

祝你好运!


如果要阻止返回,请返回“true”,如果只是在返回之前执行某些操作,请返回“false”。 - Marc_Alx

1

如果您正在使用主页面,那么在我的Xamarin Forms应用程序中,您需要找到当前页面的NavigationStack:

public bool DoBack
    {
        get
        {
            MasterDetailPage mainPage = App.Current.MainPage as MasterDetailPage;

            if (mainPage != null)
            {    
                bool doBack = mainPage.Detail.Navigation.NavigationStack.Count > 1 || mainPage.IsPresented;

                //top level of page and the Master menu isn't showing
                if (!doBack)
                {
                    // don't exit the app only show the Master menu page
                    mainPage.IsPresented = true;
                    return false; 
                }
                else
                {
                    return true;
                }                    
            }
            return true;
        }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接