[英]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.