我使用此代码this Android API Guides建议在android 3.0或更高版本中使用搜索小部件:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the options menu from XML
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.options_menu, menu);
// Get the SearchView and set the searchable configuration
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setIconifiedByDefault(false); // Do not iconify the widget; expand it by default
return true;
}
我在res / menu / menu.xml中声明了搜索菜单项(和其他菜单项)
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/help"
android:icon="@android:drawable/ic_menu_help"
android:title="Help"
/>
<item android:id="@+id/menu_search"
android:icon="@android:drawable/ic_menu_search"
android:title="Search"
android:showAsAction="ifRoom"
/>
</menu>
我还为API指南建议的搜索结果及其res / xml / searchable.xml设置创建了一个活动。
但是当我启动我的应用时,我会在NullPointerException
和onCreateOptionsMenu
onCreatePanelMenu
答案 0 :(得分:1)
正如@ A - C所说,你忘了你的menu_search项目需要android:actionViewClass="android.widget.SearchView
尝试添加它,看看它是否有效。如果没有,请确保将LogCat堆栈跟踪附加为您的问题的编辑。