我正在尝试在我的活动中实现本地搜索。我已经向清单文件添加了适当的意图过滤器和元数据标记,但如果我单击“搜索”按钮,它会调用标准 Android 搜索框。我的问题是什么?
清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.nixsolutions.invertigation.android.dataprovider"
android:versionCode="1"
android:versionName="1.0">
<application
android:icon="@drawable/icon"
android:label="@string/app_name"
android:debuggable="true">
<provider
android:name="NoteProvider"
android:authorities="com.nixsolutions.investigation.android.NoteProvider">
</provider>
<activity
android:name="NotesList">
<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" />
<category
android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
</activity>
</application>
<uses-sdk
android:minSdkVersion="7" />
</manifest>
可搜索.xml:
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:label="Custom search"
android:hint="Custom hint"
android:searchMode="showSearchLabelAsBadge"
/>
我认为您还需要一项标记为(在应用程序级别)的活动作为提供搜索的活动,通过:
<meta-data android:name="android.app.default_searchable" android:value=".LoremSearch" />
(用适当的值替换android:value
)
E.g.:
<application android:icon="@drawable/icon" android:label="@string/app_name"
android:debuggable="true" android:allowBackup="true"
>
<meta-data android:name="android.app.default_searchable"
android:value=".MySearchActivity" />
<activity android:name=".MySearchActivity">
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable"/>
</activity>
您仅为活动指定的方式仅在该活动中启用搜索。
仅在应用程序级别添加元数据标签才能搜索所有活动。
See here http://github.com/commonsguy/cw-advandroid/tree/master/Search/Lorem/以获得完整的搜索项目。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)