2015-10-12 22 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;