我是 android 新手,我正在使用与搜索相关的功能。阅读教程后,我有一些问题:
1SearchableActivity
应用程序中的唯一性?
设置搜索功能似乎需要 3 个步骤(来自 android 开发人员指南):
1)创建SearchableActivity
接收搜索关键字。
2)使SearchableActivity
接受 ACTION_SEARCH 意图
3)在元素中指定要使用的可搜索配置。
然后我想知道是否所有与搜索相关的工作都将委托给SearchableActivity
?
假设我有两个MainActivity
and MainActivityTwo
,它们都SearchView
在操作栏中创建一个。
AndroidMinefset.xml:
<activity android:name="com.app.activity.MainActivityTwo" />
<activity android:name="com.app.activity.MainActivity" />
<activity android:name="com.app.activity.SearchableActivity"
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>
xml/search.xml:
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:hint="@string/search_hint"
android:label="@string/app_name" >
</searchable>
并将搜索配置(serchableInfo)注册到SerchView
:
。主要活动
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.u_action_menu_map, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
return super.onCreateOptionsMenu(menu);
}
这不起作用,似乎没有与当前 Activity( MainActivity
) 绑定的 serchableInfo。
甚至我也改成这样:
searchView.setSearchableInfo(searchManager.getSearchableInfo(new ComponentName("com.app.activity", "SearchableActivity")));
它仍然找不到 searchableInfo。
在我将搜索相关配置添加到MainActivity
:
<activity android:name="com.app.activity.MainActivityTwo" />
<activity android:name="com.app.activity.SearchableActivity" />
<activity android:name="com.app.activity.MainActivity"
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>
这行得通。哇。
我一直以为Activity提供的Search UI和Activity的输入句柄是不一样的,但是经过我的测试,他们似乎是同一个Activity,并不是说用户输入是提交给Activity本身的,但是为什么要使用传输输入数据的**意图?
2 搜索提交
搜索对话框的右侧有一个搜索提交按钮:
但是里面什么都没有,SearchView
所以如何在 a 中提交搜索SearchView
: