簡體   English   中英

在 Xamarin Forms 的導航頁面中添加 SearchBar

[英]Add SearchBar in Navigation Page in Xamarin Forms

我正在按照這些教程在SearchbarNavigationPage中實現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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM