<activity>
元素中加入<meta-data>。
这个<meta-data>必须包含“
android:value”属性,该属性指明了
searchable activity的类名,
android:name”
,且其值必须为"android.app.default_searchable"
.
SearchableActivity和
OtherActivity),
OtherActivity
也是在它的
search dialog中
使用SearchableActivity
执行searches操作。
<!-- 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>
...
</application>
因为在OtherActivity
中已经包含了一个<meta-data>元素,它声明了使用哪个searchable activity来执行搜索,所以它的search dialog也变得可用。
按下手机的
SEARCH按钮(如果有的话)或调用onSearchRequested()都将激活search dialog.
一旦用户在search dialog中执行search操作, 系统将启动SearchableActivity
并向其传送ACTION_SEARCH
intent.
提示:searchable activity 自己默认就提供了the search dialog ,且它的searchable activity就是自己本身,所以不需要再声明.
如果你想为你的应用程序的每个activity都提供该search dialog, 那么请<meta-data>
元素加入<application>
作为其儿子, 而不是加入到每个<activity>
. 通过这种方式, 每个activity 都继承了该值, 提供search dialog, 并把searches传送到同一个searchable activity. (如果你有多个searchable activities, 你可以在单个activitiy中加入不同的<meta-data>来声明
searchable activity,这样就重写了默认的searchable activity)
六、如何启动search dialog
正如上面所提到的,如果当前activity声明了使用searchable activity,那么按下手机的
SEARCH按钮(如果有的话)或调用onSearchRequested()都将激活search dialog.
然而,SEARCH按钮并不是所有的设备上都有,所以你需要在你的UI中提供一个搜索按钮,
以便通过调用onSearchRequested()激活search dialog 。
例如,你可以在Options Menu的一个菜单项或在你的activity的布局的按钮中调用onSearchRequested()来启动
search dialog.
search_icons.zip 文件中有针对medium and high density屏幕的搜索图标,你可以在你的搜索菜单项或按钮中使用它(low-density screens scale-down the hdpi image by one half).
你也可以使用"type-to-search"功能, 这样当用户在键盘进行输入的时候,将激活search dialog,并且是直接输入到search dialog.
你可以在activity的onCreate()
中调用setDefaultKeyMode
(DEFAULT_KEYS_SEARCH_LOCAL
)来开启该功能