我是Android新手,我正在使用搜索相关功能。阅读完本教程后,我有一些问题:
1应用程序中的SearchableActivity
是唯一的吗?
设置搜索功能似乎需要3个步骤(来自android开发者指南):
1)创建SearchableActivity
以接收搜索关键字。
2)让SearchableActivity
接受ACTION_SEARCH意图
3)在元素中指定要使用的可搜索配置。
然后我想知道是否所有与搜索相关的工作都会委托给SearchableActivity
?
假设我有两个MainActivity
和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
:
.MainActivity
@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);
}
这不起作用,似乎没有与当前活动(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>
这很有用。 WTF。
我一直认为Activity提供的搜索UI和Activity句柄的输入是不同的,但是经过我的测试后看来它们是同一个Activity,也就是说用户输入都是提交给Activity本身的,但为什么要使用**意图传输输入数据?
2搜索提交
“搜索”对话框的对话框右侧有一个搜索提交按钮:
但SearchView
内部没有任何内容,以便如何在SearchView
中提交搜索内容:
答案 0 :(得分:1)
键盘上应该有一个search
键。它也可以是go
,return
或类似的键,应该开始搜索。