在安卓中搜索

2023-11-29

我有一个应用程序,我希望在其中添加搜索功能,我正在尝试按照中所述实施developer.android但是当我单击模拟器中的搜索时,活动没有启动,问题是什么?

  1. SearchActivity.java

    public class SearchActivity extends ListActivity 
    {
      public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
       handleIntent(getIntent());
    }
    
     @Override
     public void onNewIntent(Intent intent) {
       super.onNewIntent(intent);
       setIntent(intent);
       handleIntent(intent);
     }
    
     public void onListItemClick(ListView l,
       View v, int position, long id) {
        // call detail activity for clicked entry
     }
    
     private void handleIntent(Intent intent) {
      if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
      String query =intent.getStringExtra(SearchManager.QUERY);
       doSearch(query);
     }
    }
      private void doSearch(String queryStr) {
        // get a Cursor, prepare the ListAdapter
        // and set it
     }
    }
    
  2. xml/searchable.xml

    <?xml version="1.0" encoding="utf-8"?>
    <searchable xmlns:android="http://schemas.android.com/apk/res/android"
        android:label="@string/app_name"
        android:hint="@string/srchHint"
        android:inputType="textCapCharacters">
    </searchable>
    
  3. AndroidManifest.xml(下面的代码不显示其他活动)

    <application>
         <!-- other actvities -->
          <activity android:label="@string/app_name" android:launchMode="singleTop" 
                 android:name=".SearchActivity">
            <intent-filter>
                <action android:name="android.intent.action.SEARCH" />
          </intent-filter>
            <meta-data android:name="android.app.searchable" android:resource="@xml/searchable" />
         </activity>
    </application>
    

已经尝试过的事情:

1.在 StackOverflow 上查看类似的问题及其解决方案

2.查看教程格罗克金安卓 and 教育移动,他们没有帮助我的问题。

3.花时间在 chat.stackoverflow 上询问人们

问题/疑问

1.好吧,我有doSearch()方法,但是如何准确地触发查询以及如何显示数据库的结果(用一个小数据库来显示示例,如果可以的话),如何填充结果。

2.当我在模拟器中单击搜索时,搜索活动不会启动。

3.在设计搜索时,除了developer.android东西,其他细节很多时候该网站没有透露。

4.如何执行全文搜索,我在 上读到过developer.android,如何让我的数据库有一个 FTS

P.S:我是刚开始学习android,所以如果有菜鸟错误,请多多包涵,不要跳过步骤。


因此,搜索是决定应用程序实际可用性并提供必要的用户增强功能的关键因素

1.这是处理搜索的最简单方法之一

private void handleIntent(Intent intent) { 
      if (Intent.ACTION_SEARCH.equals(intent.getAction())) { 
         String query = 
               intent.getStringExtra(SearchManager.QUERY); 
         doSearch(query); 
      } 
   }    

   private void doSearch(String queryStr) 
       { 
       // get a Cursor/ArrayList, prepare the ListAdapter
       // and set it
       //helper.getSearchRecords(queryStr);//helper is a SQLiteOpenHelper Object
       //set it to adapter or get return result and proceed as you wish
       //personally i prefer ArrayAdapter
       ListView lstResult=(ListView)findViewById(R.id.lstVwResult);
       lstResult.setAdapter(null);
    SearchAdapter adapter=new SearchAdapter(getApplicationContext(), R.id.txvPersonId, helper.getSearchRecords(queryStr));
        lstResult.setAdapter(adapter);
   } 

2.SearchActivity未启动的原因是<meta-data>还需要在活动之外定义,就像这样

<application>
<activity android:label="@string/app_name" android:launchMode="singleTop" 
                 android:name=".SearchActivity">
            <intent-filter>
                <action android:name="android.intent.action.SEARCH" />
            </intent-filter>
            <meta-data android:name="android.app.searchable"  android:resource="@xml/searchable" />
</activity>

<!--define metadata outside activity in application tag-->
<meta-data android:name="android.app.default_searchable" android:value=".SearchActivity" />

3.要记住的关键事项之一是,为什么要向应用程序添加搜索功能,它是一个联系人应用程序,单击检索结果将显示特定联系人的更多详细信息,但对于餐厅应用程序,它将显示餐厅所在位置的详细信息细节上,作为开发者,开发时应该以用户需求为中心,增强用户体验。

4.因为有Full-Text Search,这并不总是必要的,它仅取决于您希望如何向数据库查询结果,您将考虑哪些字段以及它们与您的应用程序的主要目的有何相关,

更多参考

  • Sqlite.org(这是关于“如何和什么”的最广泛的文章FTS).
  • 博客.andresteingress(FTS 与 android 教程)。
  • O Reilly.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在安卓中搜索 的相关文章

  • 在自定义对象中创建时粘性服务不会重新启动

    我有一个具有绑定服务的单例对象 我希望它重新启动 当我从启动器启动应用程序时 单例对象将初始化并绑定到这个现有的服务实例 以下是在单例中创建和绑定服务的代码 public class MyState private static MySta
  • Delphi XE7 Android 全屏(隐藏软键)

    如何在XE7中全屏显示 隐藏顶部 标题 和底部 软键 工具栏 在 XE6 中 我可以通过在应用程序部分写入来调整 AndroidManifest 以使我的应用程序全屏显示并且没有操作栏 android theme android style
  • RxJava、Proguard 和 sun.misc.Unsafe

    我有以下问题RxJava 1 1 0 使用时Proguard 我没有更改 RxJava 版本或其 pro文件 但更新后OkHttp我无法编译使用Proguard因为我有关于sun misc Unsafe不在场 rxJava pro keep
  • 如何查找 Android 设备中的所有文件并将它们放入列表中?

    我正在寻求帮助来列出 Android 外部存储设备中的所有文件 我想查找所有文件夹 包括主文件夹的子文件夹 有办法吗 我已经做了一个基本的工作 但我仍然没有得到想要的结果 这不起作用 这是我的代码 File files array file
  • 更新到材质 1.2.0 后,材质按钮上缺少圆角半径属性

    这是我的材质按钮代码
  • Firebase:如何在Android应用程序中设置默认通知渠道?

    如何设置default通知渠道通知消息当应用程序在后台运行时会出现什么情况 默认情况下 这些消息使用 杂项 通道 如你看到的在官方文档中 https firebase google com docs cloud messaging andr
  • ubuntu 16.04.1 LTS 启动 Android 模拟器时崩溃

    我已经尝试过 Android studio 上的 AVD 和 Genymotion 模拟器 我的 ubuntu 16 04 1 在启动 android 模拟器时崩溃 冻结 我的电脑内存是16G 在我于 2016 年 9 月 19 日安装了
  • 带有自定义阵列适配器的微调器不允许选择项目

    我使用自定义阵列适配器作为微调器 但是 当在下拉列表中选择一个项目时 下拉列表保留在那里 并且微调器不会更新 这是错误行为 与使用带有字符串的通用数组适配器相比 这是自定义类 我错过了什么吗 谢谢 public class Calendar
  • 如何在C(Linux)中的while循环中准确地睡眠?

    在 C 代码 Linux 操作系统 中 我需要在 while 循环内准确地休眠 比如说 10000 微秒 1000 次 我尝试过usleep nanosleep select pselect和其他一些方法 但没有成功 一旦大约 50 次 它
  • Android相机意图:如何获取全尺寸照片?

    我正在使用意图来启动相机 Intent cameraIntent new Intent android provider MediaStore ACTION IMAGE CAPTURE getParent startActivityForR
  • 使用 Matrix.setPolyToPoly 选择位图上具有 4 个点的区域

    我正在 Android 上使用位图 在使用 4 个点选择位图上的区域时遇到问题 并非所有 4 点组都适合我 在某些情况下 结果只是一个空白位图 而不是裁剪后的位图 如图所示 并且 logcat 中没有任何错误 甚至是内存错误 这是我用来进行
  • 如何在不更改手机语言的情况下更改Android应用程序语言?

    我希望用户在应用程序内选择一种语言 选择语言后 我希望字符串使用特定语言 如果我更改手机语言 那么我的应用程序将以设置的语言运行 我无法找到任何在不更改手机语言的情况下设置语言的方法 此外 一旦设置了语言 更改就应该反映出来 有人可以建议一
  • Android Webview 图像未加载

    我制作了一个简单的应用程序WebView 但有些图片无法加载 正确 在我的电脑上 错误 在模拟器中 Correct 错误 没有横幅 于是我用Chrome debug进行调试 发现我的代码被改变了 我不添加像noscript or style
  • 材质设计图标颜色

    应该是哪种颜色 暗 材质图标 在官方文档上 https www google com design spec style icons html icons system icons https www google com design s
  • Android 设备上的静默安装

    我已经接受了一段时间了 在 Android 上静默安装应用程序是不可能的 也就是说 让程序安装捆绑为 APK 的应用程序 而不提供标准操作系统安装提示并完成应用程序安装程序活动 但现在我已经拿到了 Appbrain 快速网络安装程序的副本
  • 保护 APK 中的字符串

    我正在使用 Xamarin 的 Mono for Android 开发一个 Android 应用程序 我目前正在努力使用 Google Play API 添加应用内购买功能 为此 我需要从我的应用程序内向 Google 发送公共许可证密钥
  • Android 如何聚焦当前位置

    您好 我有一个 Android 应用程序 可以在谷歌地图上找到您的位置 但是当我启动该应用程序时 它从非洲开始 而不是在我当前的城市 国家 位置等 我已经在developer android com上检查了信息与位置问题有关 但问题仍然存在
  • 使用 Espresso 检查 EditText 的字体大小、高度和宽度

    如何使用 Espresso 检查 EditText 的字体大小 高度和宽度 目前要分割我使用的文本 onView withId R id editText1 perform clearText typeText Amr 并阅读文本 onVi
  • 用于推送通知的设备令牌

    我正在实施推送通知服务 我需要创建一个数据库来存储 4 个移动平台的所有设备令牌 我想根据他们的平台 iOS Android BlackBerry WP7 来组织它们 但是有什么方法可以区分平台 这样如果我只想向 Android 用户发送消
  • 在 Google 地图上绘制线条/路径

    我很长一段时间都在忙于寻找如何在 HelloMapView 中的地图上的两个 GPS 点之间画一条线 但没有运气 谁能告诉我该怎么做 假设我使用扩展 MapView 的 HelloMapView 我需要使用叠加层吗 如果是这样 我是否必须重

随机推荐

  • 一起使用 TableCellRenderer 和 getColumnClass

    当我将 getcolumn 类添加到我的 Abstracttablemodel 时 我无法使用自定义 TableCellRenderer 来设置背景颜色 我用它来排序 对齐数字列 public Class getColumnClass in
  • NodeJS 中的基本静态文件服务器

    我试图在 Node js 中创建一个静态文件服务器 更多的是作为理解 Node 的练习 而不是作为一个完美的服务器 我很了解 Connect 和 node static 等项目 并完全打算使用这些库来编写更多可用于生产的代码 但我也喜欢了解
  • 可以创建插图吗?

    我知道当你使用par fig c new T 您可以创建插图 但是 我想知道是否可以使用 ggplot2 库来创建 插图 图 更新1 我尝试使用par 用ggplot2 但它不起作用 更新2 我找到了一个可行的解决方案ggplot2 谷歌群
  • 在 iFrame 内的新窗口中打开链接

    我正在寻找创建类似于 Digg Stumbleupon 栏的东西 它固定在新打开的页面的顶部 在我的应用程序中 我显示了一堆指向外部站点的链接 不 当有人单击其中一个时 我希望它们在新选项卡中打开 我的徽标 栏位于页面顶部 我认为这可以使用
  • cookie“安全”标志如何工作?

    我知道 cookie 与secure标志不会通过未加密的连接发送 我想知道这是如何深入运作的 谁负责决定是否发送cookie 客户端仅为加密连接设置此项 这在中定义RFC 6265 Secure 属性将 cookie 的范围限制为 安全 通
  • 如何在symfony2中设置表前缀

    就像问题主题一样 如何在 symfony2 中设置默认表前缀 如果可以为所有实体默认设置 但可以选择覆盖单个实体 那就最好了 在我自己弄清楚这一点之后 我想详细说明如何实现这一目标 Symfony 2 Doctrine 2 1 Note I
  • Fortran 语言中的日期时差

    我的目标是让 fortran 返回作为字符串传入的两个时间之间的差异 与 VBA 的 TimeDiff 非常相似 我已经在 Fortran 中处理日期和时间有一段时间了 但在这种特殊情况下找不到我需要的东西 Fortran 中的第一个问题是
  • 在R中,如何查找位于工作目录之上的任何父目录中的文件?

    当我位于给定的工作目录中时 如何找到位于的文件any上升了几级 我想按文件名搜索该文件 但不知道该文件是否仅位于上一级目录 还是位于上一级目录 因此 我正在寻找一种每次升级一级并搜索文件的方法 找到后 我想获取该文件的绝对完整路径 我正在尝
  • matlab 热图转彩色图像

    我有一个灰度图像 我可以使用以下命令在 matlab 中创建热图 I imagesc I 它以颜色显示强度值 我想使用此热图获取彩色图像 我该怎么做 This is the output of imagesc 据推测 彩色图像 是指 RGB
  • 使用react-data-table-component过滤数据表

    我需要将下面的代码转换为没有钩子的普通类组件 任何人都可以帮助我 这是我指的链接https jbetancur github io react data table component path story filtering exampl
  • C# 如何判断hwnd是否在托盘图标中

    我正在尝试获取当前托盘图标的 hwnd 我所做的是使用以下代码获取系统trat窗口的hWnd DllImport user32 dll SetLastError true static extern IntPtr FindWindowEx
  • 当数组有子数组时 array_intersect 会抛出错误

    我正在尝试使用array intersect比较两个数组的数组 start array id gt 1 name gt Up action gt up start array id gt 3 name gt Down action gt d
  • JBoss Wildfly 与 Jersey Web 服务部署错误 JBAS011859:命名上下文是只读的

    我正在开发一个使用 Jersey Servlet 1 18 1 的 Java Web 服务项目 将我的 EAR 文件部署到 Jboss WildFly 8 1 0 时 我收到以下错误 并且我不确定为什么它会中断 因为同一个 EAR 文件在
  • 如何在 Google App Engine 的 ManyToOne 端按父实体过滤实体

    我使用谷歌应用程序引擎 当我尝试执行如下 JPA 查询时 SELECT p FROM Participant p WHERE p party id partyKey AND p name participantName 我收到以下错误 Ca
  • ng-repeat 动画不起作用

    我的 ng repeat 动画似乎不起作用 这是笨蛋 http plnkr co edit kYtzM9d0rzGmrniybz9c p preview 任何输入 1 您已注册两个模块 And Remove ng app来自 html 标签
  • 按钮悬停颜色更改动画 c#

    我创建了一个 Windows 窗体 它有 3 个按钮 因此 我想通过使用 mouseenter 事件来更改颜色的一键式按钮 工作正常 但我需要通过淡入或淡出的过渡来改变颜色 任何对此问题有答案的人请告诉我下面的代码 我将向您展示我的 mou
  • 通过 aws.push 部署到 Elastic Beanstalk 时保留某些现有文件

    我们在 EC2 服务器上的应用程序目录中有 SOLR 而不是在本地 git 存储库中 当我们将本地存储库推送到 EC2 时 它会删除 Solr 目录 我们已将目录名称放入 gitignore 文件中 但它仍然覆盖 SOLR 目录 我们如何防
  • IE 7 CTRL + 单击打开一个新窗口 - 如何抑制它?

    Is it possible to suppress the default IE 7 functionality when CTRL click on link opens a new window if so how Thanks Th
  • 如何在 SQL Server 2008 中从 IP 地址获取计算机名称?

    我必须从 SQL Server 中的 IP 地址获取计算机名称 我可以做些什么来完成我的任务 DB IPAdd MachineName Query select MachineName from DBTable where IPAdd yo
  • 在安卓中搜索

    我有一个应用程序 我希望在其中添加搜索功能 我正在尝试按照中所述实施developer android但是当我单击模拟器中的搜索时 活动没有启动 问题是什么 SearchActivity java public class SearchAc