为Android应用添加搜索功能




android系统中有一个搜索的应用,在改搜索应用中可以选择要搜索的项目,进行搜索,展示出结果。



如何将自己的应用加入到其中呢?实现以下几个步骤就可以:


  1. 编写搜索配置的XML文件  

    首先看下如何配置搜索的XML配置文件。先命名配置文件名称为searchable.xml,并且应该增加一个hint的提示文本信息,如下代码所示:

<?xml version="1.0" encoding="utf-8"?>

<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="@string/search_title"
    android:hint="@string/search_hint"
    android:includeInGlobalSearch="true"


    android:searchSettingsDescription="@string/search_settings_description"
/>
但是当我设置文件名为searchable.xml时,这样是失败的不懂事什么原因。后来把名

改为mysearchable.xml就成功了。


     2.创建一个可用于搜索的Activity

当用户从一个搜索框执行搜索时,SearchManager会通过ACTION_SEARCH Intent把要搜索的内容(关键字)发送到一个可执行搜索的Activity。这个Activity查询数据并显示结果。 创建一个用来执行搜索的Activity


public void onCreate(Bundle savedInstanceState) {  
super.onCreate(savedInstanceState);  
handleIntent(getIntent());  
}  
public void onNewIntent(Intent intent) {  
setIntent(intent);  
handleIntent(intent);  
}  
private void handleIntent(Intent intent) {  
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {  
String query =  
intent.getStringExtra(SearchManager.QUERY);  
doSearch(query);  
}  
}  
private void doSearch(String queryStr) {  
//执行真正的查询结果处理  
}  


    3.在Android的manifest.xml文件中进行配置


 <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
                <meta-data
            android:name="android.app.default_searchable"
            android:value="com.jj.drag.MainActivity"
        />


        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:launchMode="singleTop" >


             <intent-filter>
                <action android:name="android.intent.action.SEARCH" />
                
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <meta-data
                android:name="android.app.searchable"
                android:resource="@xml/mysearchable"
            />
        </activity>
    </application>

在上面的典型配置中,要注意如下几点:

1)由于当调用搜索activity时,Android调用的是android.intent.action.SEARCH作为搜索的intent,所以必须在intent-filter中包含android.intent.action.SEARCH。

2)在<meta-data>中,指出了searchable.xml的位置

3)同样在<meta-data>中,通过:

 
 
  1. <meta-data 
  2. android:name="android.app.default_searchable" 
  3. android:value=".YourSearchActivity" /> 

指出了当执行搜索的字符串提交时,将调用哪一个activity去进行处理。


实现上面3个步骤就可以简单实现了,如果还要更深入完美的功能,以后再去学习




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值