[英]Xamarin Forms - ContentPage with SearchBar in the Navigation bar
[英]Add SearchBar in Navigation Page in Xamarin Forms
我正在按照這些教程在Searchbar
的NavigationPage
中實現Searchbar :
我有一個簡單的ContentPage
,我在App.cs 中以NavigationPage
形式打開它:
var navigationPage = new Xamarin.Forms.NavigationPage(new Home());
navigationPage.On<iOS>().SetPrefersLargeTitles(true);
MainPage = navigationPage;
在運行項目時,我在以下行中的渲染器頁面中收到錯誤:
Toolbar GetToolbar() => CrossCurrentActivity.Current.Activity.FindViewById<Toolbar>(Resource.Id.toolbar);
拋出的異常是:
System.InvalidCastException:“無法將類型為“Android.Support.V7.Widget.Toolbar”的實例轉換為類型“Android.Widget.Toolbar”。
我無法弄清楚為什么會出現此錯誤,盡管它表明它在轉換時存在問題。
有沒有人看到我的錯誤在哪里?
將您的錯誤行更改為
var toolbar = CrossCurrentActivity.Current.Activity.FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
盡管您共享的代碼段不清楚,但您的 Renderer Class似乎正在using Android.Widget
,它也定義了一個Toolbar
成員,並且可能與FindViewById
的返回值( Android.Support.V7.Widget.Toolbar
相沖突Android.Support.V7.Widget.Toolbar
.工具Android.Support.V7.Widget.Toolbar
。
所以,現在的修復解釋,我想補充一點,更好的方式來解決您的問題要么取出using Android.Widget
和添加,而不是using Android.Support.V7.Widget.Toolbar
所以你可以寫如下代碼
using Android.Support.V7.Widget;
...
// This Toolbar refers to the one in V7!
Toolbar toolbar = CrossCurrentActivity.Current.Activity.FindViewById<Toolbar>(Resource.Id.toolbar);
或者如果您仍然需要using Android.Widget
,那么您可以使用別名:
using Android.Widget;
using V7Toolbar = Android.Support.V7.Widget.Toolbar;
...
// This Toolbar refers to the one in V7!
V7Toolbar toolbar = CrossCurrentActivity.Current.Activity.FindViewById<V7Toolbar>(Resource.Id.toolbar);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.