正しく実装しようとしてSearchWidget
いますが、いくつかの問題に直面しています。onSearchRequested()
呼び出し元のアクティビティからActivity
クエリを実行するアクティビティにいくつかの情報を渡す必要があるため、オーバーライドします。
SearchWidget
が「フォーカス」を失った場合にのみ発生します。これが「focused」の意味です。SearchWidget
外側
に触れずに検索するSearchWidget
と(したがって focused でSearchWidget
)onSearchRequested()
正しく呼び出されます。
しかし、外側に触れSearchWidget
てフォーカスを失うと、検索を実行するとメソッドonSearchRequested()
が呼び出されません。
これはのコードですonSearchRequested
:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = 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;
}