zoukankan      html  css  js  c++  java
  • android activity onSearchRequested()

    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;
    @Override
    public 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;
        }



  • 相关阅读:
    问题九十五:Reverse Text
    类对象Java设计模式之十八(中介者模式)
    节点离散温度场有限差分(有限容积)程序入门之三:2D温度场显式迭代计算(暂不考虑潜热)
    分析打开hdu 3335 (最小路径覆盖)
    结点树数据结构:树的定义和基本概念
    数据手动输入c++ 结构体练习 结构体重的char数组指针
    反转指向字符串反转C++实现源码(带测试用例)
    采样干扰十大滤波算法程序大全
    前缀子节点并行前缀求和的算法
    FatMouse's Speed
  • 原文地址:https://www.cnblogs.com/qiengo/p/2490229.html
Copyright © 2011-2022 走看看