0

我有一个使用搜索小部件的工作搜索实现,就像在一个从以下位置扩展的活动中一样Activity

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.search_results, menu);

    SearchManager searchManager = 
            (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView = 
            (SearchView) menu.findItem(R.id.action_search).getActionView();

    if(null!=searchManager) {
        searchView.setSearchableInfo(
                searchManager.getSearchableInfo(getComponentName()));
    }
    return true;
}

将活动更改为 extendActionBarActivity时,我得到这个空指针:

10-10 15:51:49.044: E/AndroidRuntime(19406): java.lang.NullPointerException
10-10 15:51:49.044: E/AndroidRuntime(19406):    at com.example.myapp.SearchResultsActivity.onCreateOptionsMenu(SearchResultsActivity.java:114)
10-10 15:51:49.044: E/AndroidRuntime(19406):    at android.app.Activity.onCreatePanelMenu(Activity.java:2546)
10-10 15:51:49.044: E/AndroidRuntime(19406):    at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:224)
10-10 15:51:49.044: E/AndroidRuntime(19406):    at android.support.v7.app.ActionBarActivity.superOnCreatePanelMenu(ActionBarActivity.java:232)
10-10 15:51:49.044: E/AndroidRuntime(19406):    at android.support.v7.app.ActionBarActivityDelegateICS.onCreatePanelMenu(ActionBarActivityDelegateICS.java:146)
10-10 15:51:49.044: E/AndroidRuntime(19406):    at android.support.v7.app.ActionBarActivity.onCreatePanelMenu(ActionBarActivity.java:199)
10-10 15:51:49.044: E/AndroidRuntime(19406):    at android.support.v7.app.ActionBarActivityDelegateICS$WindowCallbackWrapper.onCreatePanelMenu(ActionBarActivityDelegateICS.java:293)
10-10 15:51:49.044: E/AndroidRuntime(19406):    at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:436)

我的应用程序中确实有其他可以完美运行的 ActionBarActivities(尽管不是使用搜索小部件),并且我做了一个清理项目但没有结果。为什么在这种情况下我会得到这个空指针?

4

2 回答 2

1

对于ActionBarActivity,您需要按照操作栏操作视图指南使用MenuItemCompat.getActionProvider()android.support.v7.widget.SearchView(不是框架 SearchView)。

于 2014-10-10T23:53:32.797 回答
0

这是上面提到的ianhanniballake背后的完整解决方案

您必须在从 MenuItemCompat 获得的 searchView 上设置 OnQueryTextListener,然后使用从侦听器传递给您的搜索词自己打开活动。测试和工作

于 2015-03-02T22:43:05.420 回答