XamarinForms AppCompat OnOptionsItemSelected

XamarinForms AppCompat OnOptionsItemSelected,xamarin,xamarin.android,android-appcompat,xamarin-forms,Xamarin,Xamarin.android,Android Appcompat,Xamarin Forms,我最近将xamarin表单更新为1.5.1-pre1,以便使用漂亮的AppCompat主题。它很管用,看起来很漂亮 我确实有一个问题,在我的旧表单应用程序活动中,当用户单击后退箭头图标并执行一些viewmodel清理时,我用来覆盖OnOptions ItemSelected方法进行拦截。显然,在使用FormsAppCompatActivity之后没有调用此方法。 如何拦截“软”后退按钮按下(工具栏图标不是硬后退按钮) 我还试图覆盖Xamarin.Forms.Platform.Android.Ap

我最近将xamarin表单更新为1.5.1-pre1,以便使用漂亮的AppCompat主题。它很管用,看起来很漂亮

我确实有一个问题,在我的旧表单应用程序活动中,当用户单击后退箭头图标并执行一些viewmodel清理时,我用来覆盖OnOptions ItemSelected方法进行拦截。显然,在使用FormsAppCompatActivity之后没有调用此方法。 如何拦截“软”后退按钮按下(工具栏图标不是硬后退按钮)

我还试图覆盖Xamarin.Forms.Platform.Android.AppCompat.NavigationPageRenderer,但似乎无法覆盖它:(


有人知道我如何截取此内容吗?

您可以将以下内容添加到自定义渲染器中。您可以使用用户或将上下文强制转换为“活动”

var toolbar = CrossCurrentActivity.Current?.Activity?.FindViewById<Toolbar>(Resource.Id.toolbar);

toolbar.NavigationClick += ToolbarNavigationClick;
var-toolbar=CrossCurrentActivity.Current?.Activity?.FindViewById(Resource.Id.toolbar);
toolbar.NavigationClick+=ToolbarNavigationClick;

在将OnCreate()的最后两行添加到optionItemSelected(按预期调用)之后,请查看它们

Toolbar-Toolbar=this.findviewbyd(Resource.Id.Toolbar);
设置支持操作栏(工具栏);

在Xamarin.Forms中,有一种更好的方法可以截取按下的NavigationBar后退按钮和按下的硬件后退按钮,这就是创建自己的
NavigationRenderer
并覆盖方法
OnPopViewAsync

[程序集:ExportRenderer(typeof(NavigationPage)、typeof(CustomNavigationRenderer))]
名称空间YourApp.Droid
{
公共类CustomNavigationRenderer:NavigationPageRenderer
{
公共CustomNavigationRenderer(上下文):基础(上下文)
{
}
受保护的覆盖异步任务OnPopViewAsync(第页,bool动画)
{
//在这里编写代码
}
}
}

希望这有帮助

为什么不OnDisappearing()?谢谢,OnDisappearing用于清理vm内容,我必须小心清理它,只有当它将从堆栈中弹出时。但仍不清楚为什么其他方法(在所选选项上)不被称为“ICE答案:”),所以这就是诀窍。我将把这标记为已接受的答案。2015年,我确实为我参与的项目找到了一个变通方法,但现在知道有一种“合适的变通方法”很好。
        Toolbar toolbar = this.FindViewById<Toolbar>(Resource.Id.toolbar);

        SetSupportActionBar(toolbar);