当前位置: 代码迷 >> Android >> android 系统搜寻框的使用及获取输入
  详细解决方案

android 系统搜寻框的使用及获取输入

热度:59   发布时间:2016-05-01 18:18:46.0
android 系统搜索框的使用及获取输入



?效果如上图:

?

1。配置文件中 <activity?

            android:label="@string/app_name"            android:name=".SoftKey" >            <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/searchable" />             <intent-filter >                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>
?声明处理搜索的Activity?             <meta-data android:name="android.app.default_searchable" android:value=".SoftKey"/>                  </activity>

?2?searchable.xml定义?

<?xml version="1.0" encoding="utf-8"?><searchable xmlns:android="http://schemas.android.com/apk/res/android"    android:hint="@string/searchHint"    android:label="@string/searchLabel" />
3?如果当前的Activity就是响应搜索请求的Activity时,会有以下两种情况:

默认情况下,ACTION_SEARCH Intent将会创建一个新的Activity,并调用onCreate()方法,这个新的Activity会显示在最前面,你将同时有两个Activity实例。当你按“返回”键里,会回到没有执行搜索前的一个Activity。

另一种情况是配置了android:launchMode=”singleTop”的Activity,这时,我们需要

在 onNewIntent(Intent)方法中处理搜索请求,如下所示:?

[email protected]

? ?protected 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);

? ? ? ?

? ? ? ??

? ? ? ? ?System.out.println(query);

? ? ? ?}

? ?}

如果没有声明开启模式的话,可以在oncreate()使用

 Intent intent = getIntent();		//判断是否是搜索请求		    if (Intent.ACTION_SEARCH.equals(intent.getAction())) {		System.out.println(intent.getStringExtra(SearchManager.QUERY));}

?如果你要在执行搜索时,进行别的操作,可以重写onSearchRequested()方法,如下所示:

? @Override?

? ?public boolean onSearchRequested() {

?

? ? ? ?Bundle appDataBundle = new Bundle();?

? ? ? ?appDataBundle.putString("demo_key", "dddd");

?

? ? ? ?startSearch("搜索", false, appDataBundle, false);?

? ? ? ?return true;?

? ?}

  相关解决方案