4

我目前正在为我的应用程序添加搜索功能,但我遇到了一些问题。首先,我想澄清一下我不想创建搜索活动,我只想使用操作栏 SearchView 并按下建议来执行搜索。

我创建了一个正确扩展的 SearchView,尽管它似乎无法附加到我的 Searchable Configuration xml 对象。我添加了这行代码:

android:voiceSearchMode="showVoiceSearchButton|launchRecognizer"

然而我的 SearchView 似乎并没有受到它的影响。这行代码也是如此:

android:hint="搜索我的东西"

再次,没有效果。

这是我在 AndroidManifest.xml 中的活动:

<activity
    android:name="com.simon.holocountownapp.ItemListActivity"
    android:label="Holo Countdown" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.SEARCH" />
    </intent-filter>

     <meta-data
        android:name="android.app.searchable"
        android:resource="@xml/searchable" />
</activity>

这是我在 onCreateOptionsMenu() 中对 SearchView 的设置:

searchView = (SearchView) menu.findItem(R.id.abSearch)
            .getActionView();

SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
searchView.setSearchableInfo(searchManager
            .getSearchableInfo(getComponentName()));

searchView.setIconifiedByDefault(false);
searchView.setQueryRefinementEnabled(true);

所以总结一下:用于我的 searchable.xml 的标签似乎没有附加到我的 SearchView,我做错了什么?

感谢您花时间阅读本文,希望您能帮助我:)

4

3 回答 3

2

您还需要添加android.intent.action.SEARCH意图过滤器。请参阅此处的代码以供参考。

 <intent-filter>
        <action android:name="android.intent.action.SEARCH" />
  </intent-filter>
于 2013-02-16T16:23:32.403 回答
0

我认为您还需要一个<meta-data>元素作为元素的子<application>元素

<application>
        <meta-data
            android:name="android.app.default_searchable"
            android:value="com.simon.holocountownapp.ItemListActivity" >
        </meta-data>
</application>

我不记得这是否记录在案。我想我在其中一个示例应用程序中找到了它。

于 2013-02-16T23:51:29.473 回答
0

我遇到了同样的问题,似乎我在清单中缺少默认的可搜索元数据标签。

在声明将搜索发送到可搜索 Activity 的 Activity 的位置添加此内容:

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

您的清单应如下所示:

<application ... >
<!-- this is the searchable activity; it performs searches -->
<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>

<!-- this activity enables the search dialog to initiate searches
     in the SearchableActivity -->
<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>
...

文档

于 2021-12-24T22:20:02.067 回答