Xamarin CustomRenderer中的SearchView始终为空
我试图在自定义渲染器中创建一个搜索视图,但它总是返回null。我尝试了几种不同的方法,但到目前为止结果相同。现在我已经确定了这一点,因为它至少没有抛出任何其他错误 我的布局Xamarin CustomRenderer中的SearchView始终为空,xamarin,xamarin.android,xamarin.forms,Xamarin,Xamarin.android,Xamarin.forms,我试图在自定义渲染器中创建一个搜索视图,但它总是返回null。我尝试了几种不同的方法,但到目前为止结果相同。现在我已经确定了这一点,因为它至少没有抛出任何其他错误 我的布局 在一个元素中改变方法 \u activity=this.Context作为活动; _searchView=(searchView)\ u activity.findviewbyd(Resource.Id.mapSearch); SetupSearchView(); SetupSearchView方法 public vo
在一个元素中改变方法
\u activity=this.Context作为活动;
_searchView=(searchView)\ u activity.findviewbyd(Resource.Id.mapSearch);
SetupSearchView();
SetupSearchView方法
public void SetupSearchView()
{
如果(_searchView!=null)
{
_searchView.QueryTextSubmit+=异步(发送方,e)=>
{
Console.WriteLine(e.Query);
};
}
}
如果这是按照前面问题中的PageRenderer方法进行的,那么可能是OneElementChanged在布局膨胀之前启动了,从而给\u searchView一个空的视图,因为此时找不到它
可能有更好的处理程序来放置此初始化逻辑,但我目前还没有在Xamarin.Forms页面渲染器上执行任何操作
或许可以尝试查找SearchView控件,只要在执行搜索之前,您是否应该已经有以前搜索的引用
比如:-
public void DoSearch()
{
if (_searchView==null)
{
_activity = this.Context as Activity;
_searchView = (SearchView) _activity.FindViewById(Resource.Id.mapSearch);
SetupSearchView();
}
...
...
}
然后,至少这将确认它是否与过早地在OnElementChanged事件处理程序中获取引用有关,这表明有更好的方法将其放在事件处理程序中?我认为您提到上述方法是有效的,那么您尝试过的不起作用的方法在哪里呢?如果你打包了一个小演示,我会看一看。我的联系人详细信息在我的个人资料中。上述内容对我来说不起作用,我将尝试一起制作一个演示。这可能是因为它也在MapRenderer中。如果searchview为空,我将如何绑定搜索执行,这是我目前看到的问题。是否还有一些全球搜索活动。我不知道你的项目组成。以上内容非常方便您尝试获取我怀疑为空的
\u searchView
引用,这也是您遇到问题的原因。如果你能打包一些东西,我可以更准确地解释你遇到的问题的原因。没有这些,我只是在猜测你所经历的错误。有时查看代码要快得多,也容易得多。