Pse*_*nce 5 android android-activity android-actionbar searchview
如何制作两个不同的可搜索活动?
我在我的应用程序的不同部分有不同的搜索逻辑(我正在搜索什么以及我如何显示结果)。
例如,在某些活动中,我希望在我的在线数据库中查询 A 类对象,而在另一个活动中,我希望在我的在线数据库中查询 B 类对象。
我目前按照指南进行了可搜索的活动设置:http : //developer.android.com/guide/topics/search/search-dialog.html,并且非常适合搜索 A 类对象。但是,我不能t 弄清楚如何制作具有不同布局和查询逻辑的第二个可搜索活动。您似乎只能将可搜索元数据应用于一项活动?
一定有办法做到这一点,对吧?
是的,有一种方法可以做到。
如果您希望应用程序中只有一个默认搜索活动,而其他多个活动向其发送搜索查询,则可以在特定活动中创建搜索视图时提供应用程序搜索元数据,如下所示:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.search_menu, menu);
// Associate searchable configuration with the SearchView
SearchManager searchManager =
(SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView =
(SearchView) menu.findItem(R.id.search).getActionView();
SearchView searchView =
(SearchView) menu.findItem(R.id.search).getActionView();
Bundle bundle = new Bundle();
bundle.putString("Search Type", "local search");
bundle.putString("Other metadata", "metadata");
searchView.setAppSearchData(bundle);
searchView.setSearchableInfo(
searchManager.getSearchableInfo(getComponentName()));
}
Run Code Online (Sandbox Code Playgroud)
然后在默认搜索活动中获取应用程序搜索元数据,如下所示:
mSearchQuery = intent.getStringExtra(SearchManager.QUERY);
Bundle bundle = intent.getBundleExtra(SearchManager.APP_DATA);
// Get the type of search to perform
mSearchType = bundle.getString("Search Type");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1169 次 |
| 最近记录: |