我有一个使用搜索窗口小部件的工作搜索实现,就像从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;
}
当更改活动以扩展ActionBarActivity
时,我得到这个空指针:
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在我的应用程序中完美运行(虽然没有使用搜索小部件),我做了一个干净但没有结果的项目。为什么我在这种情况下得到这个空指针?
答案 0 :(得分:1)
对于ActionBarActivity
,您需要根据MenuItemCompat.getActionProvider()使用android.support.v7.widget.SearchView和Action Bar Action View guide(不是框架SearchView)。
答案 1 :(得分:0)
以下是ianhanniballake上面提到的complete solution
您必须在searchView上设置OnQueryTextListener,您可以从MenuItemCompat获取,然后使用从侦听器传递给您的搜索词自行打开活动。经过测试和工作