尝试在 *** 作栏中包含搜索查看.为此,我做了以下事情:
在菜单文件夹中创建了MenuSearch.xml,如下所示:
<?xml version="1.0" enCoding="utf-8"?><menu xmlns:androID="http://schemas.androID.com/apk/res/androID"> <item androID:ID="@+ID/action_search" androID:actionVIEwClass="AndroID.Support.V7.Widget.SearchVIEw" androID:icon="@androID:drawable/ic_menu_search" androID:showAsAction="always" androID:title="Search"/></menu>
包含片段中的OnCreateOptionsMenu方法:
public overrIDe voID OnCreateOptionsMenu(IMenu menu, MenuInflater inflater) { inflater.Inflate(Resource.Menu.MenuSearch, menu); base.OnCreateOptionsMenu(menu, inflater); var searchManager = (SearchManager) this.Activity.GetSystemService(Context.SearchService); searchVIEw = (SearchVIEw) (menu.FindItem(Resource.ID.action_search).ActionVIEw); searchVIEw.SetSearchableInfo(searchManager.GetSearchableInfo(Activity.Componentname)); }
我设置了HasOptionsMenu = true;在片段的oncreate.
使用上面的代码,我在searchVIEw.SetSearchableInfo …行中获得空指针.不知道为什么会发生这种情况,尽管一切似乎都是正确的.
基于解决类似问题的一些建议,我还尝试了searchvIEw的以下选项.
var item = menu.FindItem (Resource.ID.action_search); var searchItem = MenuItemCompat.GetActionVIEw(item); searchVIEw = searchItem.JavaCast<AndroID.Support.V7.Widget.SearchVIEw>(); searchVIEw.SetSearchableInfo(searchManager.GetSearchableInfo(Activity.Componentname));
但同样,我将searchVIEw视为null.
现在我已经尝试了可能的选项,我对于为什么searchvIEw变为null无能为力.
任何帮助深表感谢.
解决方法:
将MenuSearch.xml更改为
<?xml version="1.0" enCoding="utf-8"?><menu xmlns:androID="http://schemas.androID.com/apk/res/androID" xmlns:app="http://schemas.androID.com/apk/res-auto"> <item androID:ID="@+ID/action_search" androID:title="@string/app_name" androID:icon="@drawable/ic_action_search" app:showAsAction="collapseActionVIEw|ifRoom" /></menu>
并在您的片段中添加searchVIEw.setonqueryTextListener
@OverrIDe public voID onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); menu.clear(); inflater.inflate(R.menu.search_option_menu, menu); MenuItem item = menu.findItem(R.ID.action_search); SearchVIEw searchVIEw = new SearchVIEw(((MainActivity) mContext).getSupportActionbar().getthemedContext()); MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_ColLAPSE_ACTION_VIEW | MenuItemCompat.SHOW_AS_ACTION_IF_ROOM); MenuItemCompat.setActionVIEw(item, searchVIEw); searchVIEw.setonqueryTextListener(new SearchVIEw.OnqueryTextListener() { @OverrIDe public boolean onqueryTextsubmit(String query) { return false; } @OverrIDe public boolean onqueryTextChange(String newText) { return false; } }); searchVIEw.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw v) { } } ); }
总结 以上是内存溢出为你收集整理的android – 在Fragment中添加SearchView全部内容,希望文章能够帮你解决android – 在Fragment中添加SearchView所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)