我能够使用AndroID.MainActivity.OnBackpressed()拦截在AndroID中单击的硬件栏后退按钮,但该事件仅在硬件栏上单击按钮时单击,而不是单击导航栏后退按钮.
我也尝试覆盖Xamarin.Forms.NavigationPageOnBackbuttonpressed()但它不起作用.为什么?
有谁已经解决了这个问题?
我也试过重写Ondisappear(),有两个问题:
>页面已经在视觉上消失了,所以“你确定吗?”对话框出现在上一页上.
>无法取消后退动作.
那么,是否可以截取导航栏后退按钮?
解决方法 我能够通过覆盖FormsApplicationActivity中的以下方法来显示可以取消导航的确认对话框.// navigation back button public overrIDe bool OnoptionsItemSelected(IMenuItem item) { if (item.ItemID == 16908332) { var currentviewmodel = (Iviewmodel)navigator.CurrentPage.BindingContext; currentviewmodel.CanNavigateFromAsync().ContinueWith(t => { if (t.Result) { navigator.PopAsync(); } },TaskScheduler.FromCurrentSynchronizationContext()); return false; } else { return base.OnoptionsItemSelected(item); } } // harDWare back button public async overrIDe voID OnBackpressed() { var currentviewmodel = (Iviewmodel)navigator.CurrentPage.BindingContext; // Could display a confirmation dialog (ex: "Cancel changes?") var canNavigate = await currentviewmodel.CanNavigateFromAsync(); if (canNavigate) { base.OnBackpressed(); } }
navigator.CurrentPage是INavigation服务的包装器.我不必从模态页面取消导航,所以我只处理NavigationStack.
this.navigation.NavigationStack[this.navigation.NavigationStack.Count - 1];总结
以上是内存溢出为你收集整理的如何拦截导航栏后退按钮单击Xamarin表单?全部内容,希望文章能够帮你解决如何拦截导航栏后退按钮单击Xamarin表单?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)