我有一个运行 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) {
//do nothing, simply return true to avoid regular behavious
return true;
}
}
我想测试的是,看看这是否会阻止谷歌现在出现,这绝对不会做任何事情。如果可行,那么之后您可以添加代码,只需确保返回 true(以避免进一步传播事件),并且不要调用 onSearchRequested。