SearchWidgetを正しく実装しようとしていますが、いくつかの問題に直面しています。 onSearchRequested()をオーバーライドする理由は、呼び出し側のアクティビティからクエリを実行するアクティビティにいくつかの情報を渡す必要があるためです。SearchWidgetがonSearchRequested()を呼び出さない
SearchWidgetが「フォーカス」を失った場合にのみ発生します。これは私が「集中した」SearchWidgetを意味するものです。 SearchWidgetの外に触れることなく(そしてSearchWidgetを使って)onSearchRequested()が正しく呼び出されます。 BUT SearchWidgetの外側をタッチしてフォーカスを失うと、検索を実行するとonSearchRequested()メソッドが呼び出されません。
これはonSearchRequestedのコードである: @OverrideパブリックブールonCreateOptionsMenu(メニューメニュー){ MenuInflaterインフレータ= getMenuInflater()。 inflater.inflate(R menu.actionbar_mainscreen、menu);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
mSearchItem = menu.findItem(R.id.search);
mSearchView = (SearchView) mSearchItem.getActionView();
mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
mSearchView.setIconifiedByDefault(true);
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case R.id.search:
onSearchRequested();
break;
case R.id.mainscreen_favorites:
Intent intent = new Intent(this, FavoritesActivity.class);
startActivity(intent);
break;
}
return true;
}
@Override
public boolean onSearchRequested() {
Bundle appData = new Bundle();
appData.putInt(Constants.EXTRA_CATEGORY, index);
startSearch(null, false, appData, false);
return true;
}