1.manifest中声明处理搜索的Activity(仅此声明后就可以调用)

<meta-data android:name="android.app.default_searchable" android:value=".OnSearchAppsList" />

2.Activity定义

<activity android:name=".OnSearchAppsList"android:configChanges="orientation|keyboardHidden|navigation"android:label="@string/Market"><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" /></activity>

3.searchable.xml定义

<?xml version="1.0" encoding="utf-8"?><searchable xmlns:android="http://schemas.android.com/apk/res/android"android:label="@string/search_label"android:hint="@string/search_hint" />

4.调用 Search功能

  onSearchRequested();
5.截获 参数
  getIntent().getStringExtra(SearchManager.QUERY);

这后即可以随意处理搜索请求了。

具体使用时可以结合Activity的showDialog方法:

private static final int DIALOG_SEARCH_TEXT = 1;
@Overridepublic boolean onSearchRequested() {       showDialog(DIALOG_SEARCH_TEXT);       return false;}
 @Override    protected Dialog onCreateDialog(int id) {        switch (id) {            case DIALOG_SEARCH_TEXT:                LayoutInflater factory = LayoutInflater.from(this);                final View searchView = factory.inflate(R.layout.dialog_search_article, null);                final EditText editText = (EditText)searchView.findViewById(R.id.search_query);                editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {                    @Override                    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {                        if (actionId == EditorInfo.IME_ACTION_SEARCH                                || actionId == EditorInfo.IME_NULL) {                            InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);                            inputMethodManager.hideSoftInputFromWindow(                                    editText.getApplicationWindowToken(),                                    InputMethodManager.HIDE_NOT_ALWAYS);                            dismissDialog(DIALOG_SEARCH_TEXT);                            doSearch(editText);                            return true;                        }                        return false;                    }                });                return new AlertDialog.Builder(this)                        .setTitle(R.string.search_article_title)                        .setView(searchView)                        .setPositiveButton(R.string.search_article_ok,                                new DialogInterface.OnClickListener() {                                    @Override                                    public void onClick(DialogInterface dialog, int whichButton) {                                        doSearch(editText);                                    }                                })                        .setNegativeButton(R.string.search_article_cancel,                                new DialogInterface.OnClickListener() {                                    @Override                                    public void onClick(DialogInterface dialog, int whichButton) {                                    }                                }).create();        }        return null;    }



更多相关文章

  1. Android 自定义控件打造史上最简单的侧滑菜单
  2. Android 添加自定义BOOT_COMPLETED广播避免延迟
  3. 【自定义控件】 ------- GridView
  4. android 自定义View 在布局文件中写法
  5. android 自定义按钮的外边框
  6. Android中定义数组与使用
  7. 自定义View系列教程01--常用工具介绍
  8. Android中自己定义一个shade.xml

随机推荐

  1. Android Animation(chapter1 目录)
  2. Android(安卓)网络连通状态监测
  3. 自定义Android菜单背景
  4. android 启动Activity的四种模式
  5. Android点赞动画效果 ,点赞后加一,2种方法,
  6. Android Camera HAL设计初步
  7. Eclipse调试Android出现Debug certificat
  8. Android之添加快捷方式(Shortcut)到手机
  9. Android(安卓)Makefile and build system
  10. Android消息处理机制3——MessageQueue