Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 导航栏后退按钮覆盖_C#_Button_Xamarin_Xamarin.forms_Xamarin.android - Fatal编程技术网

C# 导航栏后退按钮覆盖

C# 导航栏后退按钮覆盖,c#,button,xamarin,xamarin.forms,xamarin.android,C#,Button,Xamarin,Xamarin.forms,Xamarin.android,我需要重写back按钮。有OnBackButtonPressed()方法,但在android中只适用于硬件按钮!如何覆盖软件导航栏按钮? 我使用的是同一个页面,我需要回到该页面的前一个状态(页面视图通过json文件更改而改变)您应该查看Xamarin的帮助页面,了解这一点,因为它列出了修复设计的许多原因,而不是以这种方式实现某些东西(例如使用PushModalAsync而不是PushAsync显示NavigationPage) 我还将在一个类似问题上发布一个链接,指向我的另一个答案,该问题讨论

我需要重写back按钮。有OnBackButtonPressed()方法,但在android中只适用于硬件按钮!如何覆盖软件导航栏按钮?
我使用的是同一个页面,我需要回到该页面的前一个状态(页面视图通过json文件更改而改变)

您应该查看Xamarin的帮助页面,了解这一点,因为它列出了修复设计的许多原因,而不是以这种方式实现某些东西(例如使用
PushModalAsync
而不是
PushAsync
显示
NavigationPage

我还将在一个类似问题上发布一个链接,指向我的另一个答案,该问题讨论了在用户单击“后退”按钮(如果他们选择这样做)后处理在页面上保存信息的另一种方法

但是Xamarin帮助站点答案的Android要点是在
main活动中覆盖
onoptionItemSelected
(如果您在导航中未使用
MasterDetailPage
,则需要修改下面的
var navPage…
代码):


您应该查看Xamarin的帮助页面,了解这一点,因为它列出了修复设计的许多原因,而不是以这种方式实现某项功能(例如使用
PushModalAsync
而不是
PushAsync
显示
NavigationPage

我还将在一个类似问题上发布一个链接,指向我的另一个答案,该问题讨论了在用户单击“后退”按钮(如果他们选择这样做)后处理在页面上保存信息的另一种方法

但是Xamarin帮助站点答案的Android要点是在
main活动中覆盖
onoptionItemSelected
(如果您在导航中未使用
MasterDetailPage
,则需要修改下面的
var navPage…
代码):

public override bool OnOptionsItemSelected(IMenuItem item)
{
    var app = Application.Current;
    if (item.ItemId == 16908332) // This makes me feel dirty.
    {
        var navPage = ((app.MainPage.Navigation.ModalStack[0] as MasterDetailPage).Detail as NavigationPage);

        if (app != null && navPage.Navigation.NavigationStack.Count > 0)
        {
            int index = navPage.Navigation.NavigationStack.Count - 1;

            var currentPage = navPage.Navigation.NavigationStack[index];

            var vm = currentPage.BindingContext as ViewModel;

            if (vm != null)
            {
                var answer = vm.OnBackButtonPressed();
                if (answer)
                    return true;
            }

        }
    }

    return base.OnOptionsItemSelected(item);
}