1

我使用此代码,因为此 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 设置创建了一个活动。但是当我启动我的应用程序时,我得到了一个NullPointerExceptionatonCreateOptionsMenu和 atonCreatePanelMenu

4

1 回答 1

1

正如@A--C 所说,您忘记了您的 menu_search 项目需要android:actionViewClass="android.widget.SearchView 尝试添加它并查看它是否有效。如果没有,请确保附加您的 LogCat 堆栈跟踪作为对您问题的编辑。

于 2013-06-17T18:47:45.397 回答