package Ġcom . gh stud ios . android . features . search Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . support . v 7 . widget . Search View Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . Menu Inflater Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . view . input method . Input Method Manager Ċ Ċ import Ġcom . gh stud ios . android . mh g end atabase . R Ċ import Ġcom . gh stud ios . android . Generic Activity Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠCar los Ġon Ġ 8 / 3 / 2 0 1 5 . Ċ Ġ*/ Ċ class ĠUniversal Search Activity Ġ: ĠGeneric Activity () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġsearch View : ĠSearch View ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġsearch Filter : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Fragment (): ĠFragment Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠUniversal Search Fragment () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Selected Section () Ġ= Ġ- 1 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChanges Ġthe Ġsearch Ġquery Ġtext Ġand Ġsubmit s Ġit . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Search Query And Submit ( query : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġsearch view 's Ġon Query Text Submit () Ġshould Ġhandle Ġthe Ġactual Ġsearching ĊĠĠĠĠĠĠĠ Ġsearch Filter Ġ= Ġquery ĊĠĠĠĠĠĠĠ Ġsearch View ?. set Query ( query , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġwe Ġdo Ġnot Ġcall Ġthe Ġsuperclass Ġas Ġthe Ġmenu Ġchanges Ġin Ġthis Ġactivity ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= Ġmenu Inflater ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . menu _ search , Ġmenu ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġthe ĠSearch View Ġand Ġperform Ġsome Ġsetup ĊĠĠĠĠĠĠĠ Ġsearch View Ġ= Ġmenu . find Item ( R . id . universal _ search ). action View Ġas ĠSearch View ĊĠĠĠĠĠĠĠ Ġsearch View ?. setIcon ified ByDefault ( false ) ĊĠĠĠĠĠĠĠ Ġsearch View ?. is Submit Button Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġsearch View ?. query Hint Ġ= ĠgetString ( R . string . search _ hint ) ĊĠĠĠĠĠĠĠ Ġsearch View ?. is Icon ified Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ// ĠPerform Ġsearches Ġon Ġtext Ġchange ĊĠĠĠĠĠĠĠ Ġ// ĠNote : ĠWe Ġcall Ġperform Search Ġon Ġthe Ġdetail , Ġbecause Ġotherwise Ġits Ġan Ġinfinite Ġrecursion ĊĠĠĠĠĠĠĠ Ġsearch View ?. setOn Query Text Listener ( object Ġ: ĠSearch View . On Query Text Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Submit ( s : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( detail Ġas ? ĠUniversal Search Fragment )?. perform Search ( s ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch View ?. clear Focus () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Change ( s : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( detail Ġas ? ĠUniversal Search Fragment )?. perform Search ( s ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġfilter Ġtext Ġwas Ġalready Ġset , Ġbind Ġit , Ġotherwise Ġget Ġfocus ĊĠĠĠĠĠĠĠ Ġif Ġ(! search Filter . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch View ?. set Query ( search Filter , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch View ?. request Focus From Touch () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠClose Ġsoftware Ġkeyboard Ġwhen Ġnavig ating Ġback Ġfrom Ġsearch Ġusing Ġthe Ġaction Ġbar . ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselected View Ġ= Ġthis . current Focus ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selected View Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Manager Ġ= Ġthis . getSystem Service ( Context . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Manager . hide Soft Input From Window ( selected View . window Token , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w ( java Class . name , Ġ" Error Ġclosing Ġkeyboard Ġnavig ating Ġfrom ĠUniversal Search ", Ġex ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} Ċ } Ċ