2015-10-12 25 views
2

我最近更新了xamarin表单到1.5.1-pre1,以便我可以使用美丽的AppCompat主题。它的作品,看起来很不错。XamarinForms AppCompat OnOptionsItemSelected

我确实有一个问题,在旧的FormsApplicationActivity中,我用来重写OnOptionsItemSelected方法来拦截用户点击后退箭头图标并执行一些viewmodel清理。显然这个方法在使用FormsAppCompatActivity后没有被调用。 如何拦截“软”后退按钮(工具栏图标不是后退按钮)?

我也试着重写Xamarin.Forms.Platform.Android.AppCompat.NavigationPageRenderer但我似乎无法覆盖它:(

没有任何人有一个线索,我怎么能拦截呢?

+1

为什么不'OnDisappearing()'? –

+0

谢谢,OnDisappearing可以用来打开vm东西,我只有在它从堆栈中弹出时才会清理它。但它仍然不清楚为什么其他方法(在选项上选择)不被称为 – xabre

回答

0

有一个看的OnCreate()的最后两行相加,OnOptionsItemSelected被称为后期望ED)。

https://raw.githubusercontent.com/UdaraAlwis/Xamarin-Playground/master/XFNavBarBackBtnClickOverride/XFNavBarBackBtnClickOverride/XFNavBarBackBtnClickOverride.Droid/MainActivity.cs

 Toolbar toolbar = this.FindViewById<Toolbar>(Resource.Id.toolbar); 

     SetSupportActionBar(toolbar); 
+0

好的答案:)所以这就是诀窍。我会将此标记为已接受的答案。我在2015年为我参与的项目找到了一个解决方法,但现在知道现在有一个“适当的解决方法”的方法是很好的。 – xabre

1

您可以添加以下到您的自定义渲染器。您可以用户current activity plugin或投你的上下文活动。

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

toolbar.NavigationClick += ToolbarNavigationClick;