IMO,搜索操作包含两个进程“收集用户输入”和“执行搜索工作”。
每个进程都需要一个活动活动,也就是说“收集用户输入”应该位于一个活动中,“执行搜索工作”也是如此。
正如导游所说:
当用户从搜索对话框或搜索中执行搜索时 小部件,系统创建一个Intent并将用户查询存储在其中。 然后系统启动您声明要处理的活动 搜索(“可搜索的活动”)并向其提供意图。
这让我认为作为JSP页面,a.jsp
包含一个用于收集用户输入的表单,表单将提交给b.jsp
或其他内容。
假设我有一个ActivityA
来保存搜索小部件,ActivityB
来处理搜索(这应该是这样的SearchableActivity
}。
现在我想知道ActivityA
和ActivityB
是否应该是同一个?
采取以下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
的搜索请求?
答案 0 :(得分:2)
来自文件
可搜索的活动是应用程序中的活动 根据查询字符串执行搜索并显示搜索 结果
当用户在搜索对话框或小部件中执行搜索时, 系统启动您的可搜索活动并将其提供给搜索 使用ACTION_SEARCH操作在Intent中查询。你可以搜索到的 activity会从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>
活动可以/将处理整个应用程序中的所有搜索请求,因为他们的搜索活动是您的可搜索活动。
{{1}}
http://developer.android.com/guide/topics/search/search-dialog.html