Cannot clear focus of Search View android while switching fragments -


i using layout having search view below toolbar, , right below search view have placed layout contains fragment , floatingactionbutton.

enter image description here

the search view has auto-complete functionality suggests city name.

when hit search button, submits query, loses focus , hides suggestions (which how supposed work).

but when change fragment (from listview mapview) clicking floatingactionbutton, search view again grabs focus , starts showing suggestions i.e. city names.

enter image description here

i using following code change fragments , clear focus

fab.setonclicklistener(new view.onclicklistener() {         @override         public void onclick(view view) {             if (flagfab) {                 fab.setimageresource(android.r.drawable.ic_menu_sort_by_size);                 flagfab = false;                 if (fragmentmanager.findfragmentbytag("testfrag2") != null) {                     log.wtf(tag, "if fragment exists, show it.");                     fragmentmanager.begintransaction().show(fragmentmanager.findfragmentbytag("testfrag2")).commit();                 } else {                     log.wtf(tag, "if fragment not exist, add fragment manager.");                     fragmentmanager.begintransaction().add(r.id.tablistbm, testfrag2, "testfrag2").commit();                 }                 if (fragmentmanager.findfragmentbytag("fraglist") != null) {                     log.wtf(tag, "if other fragment visible, hide it.");                     fragmentmanager.begintransaction().hide(fragmentmanager.findfragmentbytag("fraglist")).commit();                 }             } else {                 fab.setimageresource(android.r.drawable.ic_dialog_map);                 flagfab = true;                 if (fragmentmanager.findfragmentbytag("fraglist") != null) {                     //if fragment exists, show it.                     fragmentmanager.begintransaction().show(fragmentmanager.findfragmentbytag("fraglist")).commit();                 } else {                     //if fragment not exist, add fragment manager.                     fragmentmanager.begintransaction().add(r.id.tablistbm, listfrag, "fraglist").commit();                 }                 if (fragmentmanager.findfragmentbytag("testfrag2") != null) {                     //if other fragment visible, hide it.                     fragmentmanager.begintransaction().hide(fragmentmanager.findfragmentbytag("testfrag2")).commit();                 }             }             clearfocussearchview();          }     });  @override public void clearfocussearchview() {      if (title.contentequals("city")) {         log.wtf(tag, "clear focus map");         searchview.requestfocus();         inputmethodmanager imm = (inputmethodmanager) getsystemservice(context.input_method_service);         imm.hidesoftinputfromwindow(searchview.getwindowtoken(), 0);         getwindow().setsoftinputmode(windowmanager.layoutparams.soft_input_state_always_hidden);         searchview.clearfocus();     } } 

what need search view shouldn't have focus until , unless click on again.

i stuck here, sort of appreciated.thank you.

to clear focus while switching fragments, should clearfocus in fragment

override oncreate()

@override public void oncreate(@nullable bundle savedinstancestate) {             super.oncreate(savedinstancestate);     sethasoptionsmenu(true); } 

and oncreateoptionsmenu

@override public void oncreateoptionsmenu(menu menu, menuinflater inflater) {     searchview searchview = (searchview) menu.finditem(r.id.action_search).getactionview();     searchview.seticonified(false);     searchview.seticonifiedbydefault(false);     searchview.clearfocus();     } } 

hope helps!


Comments