因此,我的应用程序中有一个默认的可搜索活动,如果我在简单活动中按下搜索按钮,它就会起作用。但是当我在一个标签页上,它的内容是一个ActivityGroup,而不是一个活动,应用程序就崩溃了。
08-19 17:18:23.438: ERROR/AndroidRuntime(9078): Uncaught handler: thread main exiting due to uncaught exception
08-19 17:18:23.458: ERROR/AndroidRuntime(9078): java.lang.IllegalArgumentException: no ident
08-19 17:18:23.458: ERROR/AndroidRuntime(9078): at android.app.Activity.ensureSearchManager(Activity.java:3499)
08-19 17:18:23.458: ERROR/AndroidRuntime(9078): at android.app.Activity.startSearch(Activity.java:2648)
08-19 17:18:23.458: ERROR/AndroidRuntime(9078): at android.app.Activity.onSearchRequested(Activity.java:2612)
...即使我将这段代码添加到我的activityGroup中,我仍然会崩溃:
@Override
public boolean onSearchRequested() {return false;}发布于 2010-11-25 02:03:55
好的,很抱歉我没有早点回答。
所以,是的,问题已经解决了,我认为它来自ActivityGroup,onSearchRequested()没有被覆盖,但无论如何都接受了事件。
所以解决方案是这样的:
@Override
public boolean onSearchRequested() {
return mLocalActivityManager.getCurrentActivity().onSearchRequested();
}mLocalActivityManager是启动不同活动的LocalActivityManager ...
然后,您必须覆盖组中显示的每个活动中的onSearchRequested(),如果您不需要搜索对话框,则最终只返回false。
发布于 2011-01-12 23:18:37
您好,我发现您的解决方案不起作用。但这让我开始思考。只有当TabHost中有一个TabHost时,才会发生这种情况。因此,我在最内部的TabHost中放置了一个调试器,并注意到onSearchRequest从未被调用过。但是TabHost内部的活动做到了这一点。因此,我将此添加到内部活动中
@Override
public boolean onSearchRequested() {
if (getParent() instanceof TabActivity) {
return getParent().onSearchRequested();
} else {
return super.onSearchRequested();
}
}现在它起作用了。
https://stackoverflow.com/questions/3523324
复制相似问题