5. </intent-filter>
6. <meta-data android:name="android.app.searchable"
7. android:resource="@xml/searchable"/>
8. </activity>
9. <activity android:name=".AnotherActivity" ... >
10. </activity>
11. <!—这个配置就可以让你在整个应用程序中调用搜索框 -->
12. <meta-data android:name="android.app.default_searchable"
13. android:value=".MySearchableActivity" />
14. ...
15. </application>
上面代码中
android:name=”android.app.default_searchable” 定义一个响应搜索框
搜索请求的名称,
android:value 指定是由哪个 Activity 响应并执行搜索。当我们在应用
程序中的
OtherAcitivity 中执行搜索请求时,MySearchableActivity 将会被加载用于执
行搜索并显示搜索结果。
执行一个搜索
当一个
Activity 声明为可搜索时,执行实际的搜索包括三个步骤:接收查询,检索你的数
据,并提交结果。
通常情况下,你的搜索结果需要在一个
ListView 中展现,所以你用于执行搜索的
Acitivity 要继承 ListActivity,这样,可以方便的访问 ListView 的 Api。
接收搜索查询
当从搜索对话框执行搜索时,刚才配置的可用于搜索的
Acitivity 将会被 Intent 激活,同
时带着一些搜索相关的参数,你需要检查
Intent 并做出搜索响应,如下所示:
1. @Override
2. public void onCreate(Bundle savedInstanceState) {
3. super.onCreate(savedInstanceState);
4. setContentView(R.layout.search);
5.
6. Intent intent = getIntent();
7. //判断是否是搜索请求
8. if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
9. //获取搜索的查询内容(关键字)
10. String query = intent.getStringExtra(SearchManager.QUERY);
11. //执行相应的查询动作
12. doMySearch(query);
13. }
14. }
doMySearch()方法将根据关键字查询数据库,或从网络上查询数据,如果是耗时的搜索,
你还需要使用进度条,来告诉用户搜索正在进行,最后返回结果后,可以调用
ListView 的