i using layout having search view below toolbar, , right below search view have placed layout contains fragment , floatingactionbutton.
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.
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
Post a Comment