Android核心功能开发SearchView使用的开发(代码共享)
在Android上。搜索是一个核心的用户功能。用户可以搜索可用的任何数据,的内容是否存储在设备本身或者需要促进网络接入上。Android它提供了一个框架,为用户创造一个一致的搜索的搜索体验,它可以帮你实现搜索应用程序。
搜索框架提供两种搜索模式:一个搜索对话框(Search Dialog)位于搜索屏幕的顶部或窗体小部件(SearchView),能够将其嵌入到你的布局中。在这两种情况下,Android系统将帮助你搜索实现交付运行搜索的任务给一个特定的Activity。
效果例如以下图所看到的。
当用户须要运行一个搜索的搜索对话框或搜索小部件,系统创建一个Intent和存储用户Query,然后系统会启动你事先声明的用于运行数据查找的Activity,,使用它进行数据搜寻。总共须要下面三个步骤。
(1)建立一个Search.XML文件在res/xml文件里
一个XML文件,配置一些search dialog或widget的设置。
它包含设置特性,比方语音搜索,搜索建议和提示文本搜索框。
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:label="@string/app_label"
android:hint="@string/search_hint" >
</searchable>
(2)声明一个SearchActivity
这个Activiy接收搜索用户的数据,并显示搜索结果。
特别注意的是为了使调用的Activity找到这个SearchActivity,你必须首先声明Android搜索Activitydao到你的清单文件。
例如以下所看到的。
<application ... >
<activity android:name=".SearchableActivity" >
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable"/>
</activity>
...
</application>
SearchActivity要完毕下面三个步骤。1 接收查询 2 搜索您的数据3 展示结果。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.search);
handleIntent(getIntent());
} @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);
doMySearch(query);
}
}
之前看博客又看到有人说onNewIntent()不知道几时促发的。我研究了下官方文档上面是这么写的。假设我们将android:launchMode设置为“singleTop”,然后SerachActivity接收ACTION_SEARCH intent 会调用 onNewIntent()方法。
(3)建立一个搜索界面
搜索界面包括两种类型SearchDialog和SearchWidget。SerachDialog:默认情况下,搜索对话框隐藏,我们通过调用onSearchRequested()(当用户按搜索button)让他显示在屏幕上端,SearchWidget :同意用户将搜索框放在布局的任何位置,但通常须要跟actionbar结合。
搜索界面的Activity也须要在清单文件声明
<activity android:name=".OtherActivity" ... >
<!-- enable the search dialog to send searches to SearchableActivity -->
<meta-data android:name="android.app.default_searchable"
android:value=".SearchableActivity" />
</activity>
public class OtherActivity extends Activity{
private Button mStartSearch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.search_invoke);
//就一个button
mStartSearch = (Button)findViewById(R.id.btn_start_search);
//启动搜索框
mStartSearch.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
onSearchRequested();
}
});
} //重写onSearchRequested方法
@Override
public boolean onSearchRequested() {
//除了输入查询的值,还可额外绑定一些数据
Bundle appSearchData = new Bundle();
appSearchData.putString("demo_key","text"); startSearch(null, false, appSearchData, false);
//必须返回true。 否则无效数据绑定
return true;
} }
Android核心功能开发SearchView使用的开发(代码共享)的更多相关文章
- Chrome扩展开发之四——核心功能的实现思路
目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制 ...
- android nfc功能开发
链接:Android NFC开发详细总结 https://blog.csdn.net/zhwadezh/article/details/79111348 链接2:Android NFC功能 简单实 ...
- 零售CRM系统开发的核心功能
在零售行业中,客户关系管理系统是一个包含销售,市场营销和客户服务流程的中央枢纽.它为企业所有者提供了一种可以结合所有与销售有关的问题并管理销售流程的有效工具.零售CRM可以留住客户,提供个性化的一流客 ...
- 【java框架】MyBatis-Plus(1)--MyBatis-Plus快速上手开发及核心功能体验
1.MyBatis-Plus入门开发及配置 1.1.MyBatis-Plus简介 MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变, ...
- Android NFC技术(三)——初次开发Android NFC你须知道NdefMessage和NdefRecord
Android NFC技术(三)--初次开发Android NFC你须知道NdefMessage和NdefRecord 这最近也是有好多天没写博客了,除了到处张罗着搬家之外,依旧还是许许多多的琐事阻碍 ...
- 【Android开发】如何设计开发一款Android App
本文从开发工具选择,UI界面.图片模块.网络模块.数据库产品选择.性能.安全性等几个方面讲述了如果开发一个Android应用.现在整理出来分享给广大的Android程序员. 开发工具的选择 开发工具我 ...
- Android平台利用OpenCL框架实现并行开发初试
http://www.cnblogs.com/lifan3a/articles/4607659.html 在我们熟知的桌面平台,GPU得到了极为广泛的应用,小到各种电子游戏,大到高性能计算,多核心.高 ...
- 乘风破浪,遇见Android Jetpack之Compose声明式UI开发工具包,逐渐大一统的原生UI绘制体系
什么是Android Jetpack https://developer.android.com/jetpack Android Jetpack是一个由多个库组成的套件,可帮助开发者遵循最佳做法.减少 ...
- HelloX操作系统网络功能简介及使用和开发指南
HelloX网络功能简介及使用和开发指南 HelloX网络功能简介 作为物联网操作系统,网络功能是必备的核心功能之一.按照规划,HelloX实现了两个不同类型的TCP/IP协议栈,一个面向资源受限的嵌 ...
随机推荐
- 洛谷—— P1069 细胞分裂
https://www.luogu.org/problem/show?pid=1069#sub 题目描述 Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家.现在,他正在为一个细 ...
- Android底层开发之Linux输入子系统要不要推断系统休眠状态上报键值
Android底层开发之Linux输入子系统要不要推断系统休眠状态上报键值 题外话:一个问题研究到最后,那边记录文档的前半部分基本上都是没用的,甚至是错误的. 重点在最后,前边不过一些假想猜測. ht ...
- js进阶 13-4 jquery自定义动画animate()如何使用
js进阶 13-4 jquery自定义动画animate()如何使用 一.总结 一句话总结:animate(params,[speed],[easing],[fn]),参数:params:一组包含作为 ...
- amazeui学习笔记--css(常用组件7)--输入框组Input-group
amazeui学习笔记--css(常用组件7)--输入框组Input-group 一.总结 1.使用:Input group 基于 Form 组件和 Button 组件扩展,依赖这两个组件.在容器上添 ...
- 位数(digits)的处理
主要针对:二进制表示法,以及十进制表示法: 1. 获取位数 已知该数 n 采用十进制进行表示 二进制形式的位数:⌊log2n⌋+1 十进制形式的位数:⌊log10n⌋+1 2. 截断(保留前/后 m ...
- python3 购物车小程序,余额写入文件保存
python3 购物车小程序,余额写入文件保存 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Hiuhung Wan goods = ( ...
- 【AtCoder Beginner Contest 074 B】Collecting Balls (Easy Version)
[链接]h在这里写链接 [题意] 看懂题目之后就会发现是道大水题. [题解] 在这里写题解 [错的次数] 0 [反思] 在这了写反思 [代码] #include <bits/stdc++.h&g ...
- Oracle Web链接客户端
TreeSoft数据库管理系统 http://www.treesoft.cn
- C语言深度剖析-----函数与指针的分析
指针的本质 指针需要保证指向任意数据类型,所以指针变量都占用32位bit即4字节. PS:不同机器上,指针占用内存不一 ...
- stm32的串口中断
下面有很多问题没有验证: 在设置USART_CR1中的TE位时,会发送一个空闲帧作为第一次数据发送, 目前我所了解的串口中断发送,有两种方式: 一个是:TC 一个是:TXE 这是判断两个标志位, 第一 ...