我有一部运行4.2.1的Galaxy Nexus手机,使用oonSearchRequested
没有问题。
需要考虑以下几点:
1 - 确保在你的清单文件中声明可搜索活动确实是可搜索的,并确保添加了搜索意图过滤器以捕获onSearchRequested
:
<activity
android:name="com.lazybits.rae.movil.Results"
android:label="@string/title_activity_results"
android:launchMode="singleTask"
android:parentActivityName="com.lazybits.rae.movil.Home" >
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
</activity>
2 - 重写onKeyDown()
以创建一个合适的搜索界面:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_SEARCH) && isOkToSearchWithinTheApp) {
onSearchRequested();
return true;
}
return super.onKeyDown(keyCode, event);
}
在这一点上,如果您有一个searchWidget,它应该自动加载,现在只需要等待用户输入。您会希望通过覆盖onNewIntent来处理搜索,根据您的searchable.xml行为使用Action.Search或Action.View。
编辑
好的,您能否帮我一个忙,尝试重写onKeyDown,但不要放任何代码在其中,像这样:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_SEARCH) {
return true;
}
}
我想要测试的是,看看这样做是否能阻止Google的出现,这应该完全没有作用。如果这个方法有效,那么之后你可以添加自己的代码,只需确保返回true(以避免事件的进一步传播),并且不调用onSearchRequested即可。