package Ġcom . example . new sc ast . ui . search Ċ Ċ import Ġandroid . app . Search Manager Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . activity . view Models Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . widget . Search View Ċ import Ġandroidx . core . app . Nav Utils Ċ import Ġandroidx . fragment . app . FragmentManager Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġcom . example . new sc ast . R Ċ import Ġcom . example . new sc ast . ui . ViewModel Factory Ċ import Ġtim ber . log . Tim ber Ċ Ċ class ĠSearch Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠSearch ViewModel Ġby Ġview Models Ġ{ ĠViewModel Factory () Ġ} ĊĊĠĠĠ Ġ// ĠOb servers ĊĠĠĠ Ġprivate Ġval ĠerrorMessage LiveData Observer Ġ= ĠObserver < Boolean > Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" Sorry Ġsomething Ġwent Ġwrong . ĠPlease Ġtry Ġagain Ġlater .", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ search ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠSearch Fragment () ĊĠĠĠĠĠĠĠ Ġval Ġfragment Manager : ĠFragment Manager Ġ= Ġsupport FragmentManager ĊĠĠĠĠĠĠĠ Ġfragment Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . search _ fragment _ container , Ġfragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo Back Stack ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĊĠĠĠĠĠĠĠ Ġinit LiveData () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= Ġmenu Inflater ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . menu _ search _ activity , Ġmenu ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġthe ĠSearch View Ġand Ġset Ġthe Ġsearch able Ġconfiguration ĊĠĠĠĠĠĠĠ Ġval Ġsearch Manager Ġ= Ġget System Service ( Context . SEARCH _ SERVICE ) Ġas ĠSearch Manager ĊĠĠĠĠĠĠĠ Ġ( menu . find Item ( R . id . menu _ search _ view ). action View Ġas ĠSearch View ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Search able Info ( search Manager . get Search able Info ( component Name )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Icon ified ByDefault ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On Query Text Listener ( object Ġ: ĠSearch View . On Query Text Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Submit ( query : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Search Ġquery : Ġ$ query ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . search News ( query ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclear Focus () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Change ( new Text : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Focus () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġremove Ġdefault Ġmagn ifying Ġg lass Ġicon ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmag Icon : ĠImageView Ġ= ĠfindViewById ( android x . appcompat . R . id . search _ mag _ icon ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmag Icon . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmag Icon . setImage Drawable ( null ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . id . home Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNav Utils . navigate Up To ( this , Ġintent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit LiveData () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . errorMessage LiveData . observe ( this , ĠerrorMessage LiveData Observer ) ĊĠĠĠ Ġ} Ċ Ċ }