この Android API ガイドは、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
atonCreateOptionsMenu
と at が表示されますonCreatePanelMenu