我有一个我想要搜索的活动。当我点击搜索时,事件OnNewIntent
会被调用两次......我做错了什么?
我正在创建像这样的Searchview
public override bool OnCreateOptionsMenu(IMenu menu)
{
searchView = new SearchView(this);
var searchManager = (SearchManager)GetSystemService(Context.SearchService);
var searchableInfo = searchManager.GetSearchableInfo(ComponentName);
searchView.SetSearchableInfo(searchableInfo);
var search_item = menu.Add(new Java.Lang.String("Search"));
search_item.SetActionView(searchView);
search_item.SetShowAsAction(ShowAsAction.IfRoom);
var edit = menu.Add(0, insertItemID, 0, "Insert");
edit.SetShowAsAction(ShowAsAction.IfRoom);
edit.SetIcon(Android.Resource.Drawable.IcMenuAdd);
return base.OnCreateOptionsMenu(menu);
}
日志:
10-17 07:45:45.491 I/ActivityManager( 900): START {act=android.intent.action.SEARCH flg=0x10000000 cmp=Intranet.Intranet/intranet.screens.ContactListActivity (has extras)} from pid 2971
10-17 07:45:47.562 W/EGL_emulation( 2971): eglSurfaceAttrib not implemented
10-17 07:45:47.562 I/ActivityManager( 900): START {act=android.intent.action.SEARCH flg=0x10000000 cmp=Intranet.Intranet/intranet.screens.ContactListActivity (has extras)} from pid 2971
10-17 07:45:48.472 D/OpenGLRenderer( 2971): Flushing caches (mode 0)
10-17 07:45:48.481 D/dalvikvm( 900): GC_CONCURRENT freed 559K, 13% free 7991K/9159K, paused 1ms+1ms
10-17 07:45:48.500 W/InputManagerService( 900): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@b48b3470
10-17 07:45:48.561 D/dalvikvm( 963): GC_CONCURRENT freed 389K, 41% free 6027K/10183K, paused 0ms+0ms
答案 0 :(得分:16)
我假设您已经将搜索活动单个顶部并覆盖onNewIntent,以便在处理搜索意图之前调用setIntent。如果是这样,在使用模拟器硬件键盘时,它是SearchView中的一个错误。
您可以转到设置 - >来禁用模拟器中的硬件键盘。 Launguage&输入并单击默认值。
如果使用软键盘,则只能看一次。
答案 1 :(得分:1)
我在DatePickerDialog中遇到了类似的问题......它似乎是一个api bug。它适用于Android 2.2,但不适用于Android 4.0+。我的解决方案是:
int timesCalled = 0;
public void yourMethod(){
timesCalled += 1;
if ((timesCalled % 2) == 0) {
//do your stuff here
}
}
它不是最清晰的解决方案,但它对我有用。希望这可以提供帮助。
答案 2 :(得分:0)
为什么不尝试这样的事情......
该项目的示例应用程序就在这里......
https://play.google.com/store/apps/details?id=com.limecreativelabs.app
你可以在这里阅读项目规范......