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)方法中处理搜索请求,如下所示: 

 @Override

   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; 

   }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值