Android:搜索对话框不会出现

时间:2011-04-20 14:32:04

标签: java android xml search android-manifest

我目前正在尝试在我的应用中实施搜索。我跟着Google's Tutorial但是现在,当我按下“搜索”-Button(在设备/模拟器上)时,什么都没有出现。我不确定为什么。

我的searchable.xml文件:

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

</searchable>

这是Search-Activity的Android Manifest部分:

 <!-- Search Activity -->
 <activity android:name=".SearchNotes">
    <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>

填充我的ListActivity的代码:

private void searchAndDisplay(String query){
    SQLiteDatabase db = db_con.getReadableDatabase();
    final Cursor c = db.rawQuery(
            "SELECT headline, id as '_id' FROM entry WHERE " +
            "(headline LIKE '%?%') OR (content LIKE '%?%') ",
            new String[]{query, query});
    this.startManagingCursor(c);
    final ListAdapter searchAdapter = new SimpleCursorAdapter(
            this, 
            android.R.layout.simple_list_item_2, c, 
            new String[] {"headline", "_id"}, 
            new int[] {android.R.id.text1, android.R.id.text2});
    this.setListAdapter(searchAdapter);
    db.close();
}

这在我的Android设备上的模拟器中不起作用。 我在这里缺少什么?

3 个答案:

答案 0 :(得分:4)

你有吗

<activity android:name=".OtherActivity" ... >
    <!-- enable the search dialog to send searches to SearchableActivity -->
    <meta-data android:name="android.app.default_searchable"
               android:value=".SearchNotes" />
</activity>

在您的Activity标记内?如果您愿意,它也可以应用于应用程序。

答案 1 :(得分:2)

我担心如果android:includeInGlobalSearch="true"导致问题,因为它需要执行以下步骤。尝试从android:includeInGlobalSearch="true"删除searchable.xml,看看是否有帮助

要提供最近的查询建议,您需要:

  • 实施可搜索的活动,如创建搜索界面中所述。
  • 创建一个扩展SearchRecentSuggestionsProvider的内容提供程序,并在应用程序清单中声明它。
  • 使用有关提供搜索建议的内容提供商的信息修改可搜索配置。
  • 每次执行搜索时,都会将查询保存到内容提供商。

参考:http://developer.android.com/guide/topics/search/adding-recent-query-suggestions.html

答案 2 :(得分:-1)

代码中的所有内容都很正常。您需要做的就是在运行应用程序之后,您应该单击模拟器或移动设备上的菜单按钮。这将打开搜索选项。选择它,你应该能够搜索。