1

IMO,搜索动作包含两个过程“收集用户输入”和“做搜索工作”。

每个进程都需要一个活动来存活,也就是说“收集用户输入”应该位于一个活动中,“做搜索工作”也是如此。

正如导游所说:

当用户从搜索对话框或搜索小部件执行搜索时,系统会创建一个 Intent 并将用户查询存储在其中。然后系统启动您声明的用于处理搜索的活动(“可搜索活动”)并将其传递给意图。

这让我觉得 JSP 页面a.jsp包含一个收集用户输入的表单,该表单将被提交b.jsp或其他。

假设我有一个ActivityA保存搜索小部件并ActivityB处理搜索(这应该是 so 的一面SearchableActivity)。

现在我想知道ActivityAandActivityB是否应该是同一个?

采取以下xml祝贺:

    <activity
        android:name="com.app.MainActivity"
        android:label="@string/title_activity_main"
        android:launchMode="singleTop" >
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>

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

这是否意味着MapActivity它将处理来自整个应用程序的所有搜索请求,或者它只能处理唯一的搜索请求MapActivity

4

1 回答 1

3

从文件

可搜索活动是应用程序中的活动,它基于查询字符串执行搜索并显示搜索结果。

当用户在搜索对话框或小部件中执行搜索时,系统会启动您的可搜索活动并将搜索查询传递给带有 ACTION_SEARCH 操作的 Intent。您的可搜索活动从意图的 QUERY extra 中检索查询,然后搜索您的数据并显示结果。

因此android.app.searchable,如果您将其定义为其他活动,则您的活动可以/将处理来自整个应用程序的所有搜索请求,因为它们的搜索活动是您的可搜索活动。

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

http://developer.android.com/guide/topics/search/search-dialog.html

于 2013-10-23T14:41:12.430 回答