尝试在操作栏中包含一个搜索视图。为此,我已经完成了以下步骤:
在菜单文件夹中创建了名为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));
}
我在片段的onCreate中设置了HasOptionsMenu = true;
。
使用上述代码,我在searchView.SetSearchableInfo...
这一行中得到了一个空指针异常。虽然所有东西似乎都正确并且位置正确,但我不确定为什么会出现这种情况。
根据解决类似问题的一些建议,我还尝试了下面的搜索视图选项。
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));
但是,我再次得到了null的searchView。
现在我已经尝试了可能的选项,对于为什么搜索视图变为null,我感到茫然无措。
非常感谢任何帮助。
MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW | MenuItemCompat.SHOW_AS_ACTION_IF_ROOM); MenuItemCompat.setActionView(item, searchView);
这两行代码已经过时,请更新答案...... - Gowthaman M