/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 , ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ ĊĊ Ġpackage Ġcom . example . android . navigation ĊĊ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view .* Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . navigation . find Nav Controller Ċ import Ġandroidx . navigation . ui . Navigation UI Ċ import Ġcom . example . android . navigation . databinding . Fragment Title Binding ĊĊ Ċ // ĠTODO : ĠRename Ġparameter Ġarguments , Ġchoose Ġnames Ġthat Ġmatch Ċ // Ġthe Ġfragment Ġinitialization Ġparameters , Ġe . g . ĠARG _ ITEM _ NUMBER Ċ @ Suppress (" unused ") Ċ private Ġconst Ġval ĠARG _ PARAM 1 Ġ= Ġ" param 1 " Ċ @ Suppress (" unused ") Ċ private Ġconst Ġval ĠARG _ PARAM 2 Ġ= Ġ" param 2 " Ċ Ċ /** Ċ Ġ* ĠThe Ġ` start Destination ` Ġ[ Fragment ] Ġof Ġour Ġapp , Ġit Ġjust Ġdisplays Ġour ĠTitle Ġ" Android ĠT rivia ", Ġand Ċ Ġ* Ġa Ġ" Play " Ġbutton Ġwhich Ġnavig ates Ġto Ġthe Ġ` Game Fragment ` Ġwhen Ġclicked . Ċ Ġ*/ Ċ class ĠTitle Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalled Ġto Ġhave Ġthe Ġfragment Ġinstantiate Ġits Ġuser Ġinterface Ġview . ĠWe Ġinitialize Ġour ĊĠĠĠĠ Ġ* Ġ[ Fragment Title Binding ] Ġvariable Ġ` val Ġbinding ` Ġto Ġthe Ġbinding Ġreturned Ġby Ġthe Ġmethod ĊĠĠĠĠ Ġ* Ġ[ Data Binding Util . inflate ] Ġwhen Ġit Ġuses Ġour Ġ[ LayoutInflater ] Ġparameter Ġ[ in flater ] Ġto ĊĠĠĠĠ Ġ* Ġinf late Ġour Ġlayout Ġfile Ġ[ R . layout . fragment _ title ] Ġusing Ġour Ġ[ ViewGroup ] Ġparameter ĊĠĠĠĠ Ġ* Ġ[ container ] Ġfor Ġits ĠLayout Params Ġwithout Ġatt aching Ġto Ġit . ĠWe Ġthen Ġset Ġthe Ġ` OnClickListener ` ĊĠĠĠĠ Ġ* Ġof Ġthe Ġ` play Button ` Ġproperty Ġof Ġ` binding ` Ġ( the Ġbutton Ġwith ĠID Ġ[ R . id . play Button ]) Ġto Ġa ĊĠĠĠĠ Ġ* Ġlambda Ġwhich Ġfinds Ġthe Ġ` Nav Controller ` Ġassociated Ġwith Ġthe Ġ[ View ] Ġclicked Ġand Ġuses Ġit Ġto ĊĠĠĠĠ Ġ* Ġnavigate Ġto Ġthe Ġ` Game Fragment `. ĠWe Ġcall Ġthe Ġ[ set Has Options Menu ] Ġmethod Ġwith Ġ` true ` Ġto ĊĠĠĠĠ Ġ* Ġreport Ġthat Ġthis Ġfragment Ġwould Ġlike Ġto Ġparticip ate Ġin Ġpop ulating Ġthe Ġoptions Ġmenu Ġby ĊĠĠĠĠ Ġ* Ġreceiving Ġa Ġcall Ġto Ġ[ onCreate Options Menu ] Ġand Ġrelated Ġmethods . ĠFinally Ġwe Ġreturn Ġthe Ġ` root ` ĊĠĠĠĠ Ġ* Ġproperty Ġof Ġ` binding ` Ġ( the Ġout erm ost Ġ[ View ] Ġin Ġthe Ġlayout Ġfile Ġassociated Ġwith Ġthe ĠBinding ) ĊĠĠĠĠ Ġ* Ġto Ġthe Ġcaller . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġinflater ĠThe Ġ[ LayoutInflater ] Ġobject Ġthat Ġcan Ġbe Ġused Ġto Ġinf late ĊĠĠĠĠ Ġ* Ġany Ġviews Ġin Ġthe Ġfragment ĊĠĠĠĠ Ġ* Ġ@ param Ġcontainer ĠIf Ġnon - null , Ġthis Ġis Ġthe Ġparent Ġview Ġthat Ġthe Ġfragment 's ĊĠĠĠĠ Ġ* ĠUI Ġwill Ġbe Ġattached Ġto . ĠThe Ġfragment Ġshould Ġnot Ġadd Ġthe Ġview Ġitself , ĊĠĠĠĠ Ġ* Ġbut Ġthis Ġcan Ġbe Ġused Ġto Ġgenerate Ġthe ĠLayout Params Ġof Ġthe Ġview . ĊĠĠĠĠ Ġ* Ġ@ param ĠsavedInstanceState ĠIf Ġnon - null , Ġthis Ġfragment Ġis Ġbeing Ġre - construct ed ĊĠĠĠĠ Ġ* Ġfrom Ġa Ġprevious Ġsaved Ġstate Ġas Ġgiven Ġhere . ĊĠĠĠĠ Ġ* Ġ@ return ĠReturn Ġthe Ġ[ View ] Ġfor Ġthe Ġfragment 's ĠUI . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress (" Red undant Nullable ReturnType ") ĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠData Binding Util . inflate < Fragment Title Binding >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinflater , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . fragment _ title , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġbinding . play Button . setOnClickListener Ġ{ Ġview Ġ: ĠView Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . find Nav Controller (). navigate ( R . id . action _ title Fragment _ to _ game Fragment ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInitialize Ġthe Ġcontents Ġof Ġthe ĠFragment Ġhost 's Ġstandard Ġoptions Ġmenu . ĠFirst Ġwe Ġcall Ġour ĊĠĠĠĠ Ġ* Ġsuper 's Ġimplementation Ġof Ġ` onCreate Options Menu `, Ġthen Ġwe Ġuse Ġour Ġ[ Menu Inflater ] Ġparameter ĊĠĠĠĠ Ġ* Ġ[ in flater ] Ġto Ġinf late Ġour Ġmenu Ġlayout Ġfile Ġ[ R . menu . options _ menu ] Ġinto Ġour Ġ[ Menu ] Ġparameter ĊĠĠĠĠ Ġ* Ġ[ menu ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġmenu ĠThe Ġoptions Ġmenu Ġin Ġwhich Ġyou Ġplace Ġyour Ġitems . ĊĠĠĠĠ Ġ* Ġ@ param Ġinflater Ġa Ġ[ Menu Inflater ] Ġyou Ġcan Ġuse Ġto Ġinf late Ġan ĠXML Ġmenu Ġfile Ġwith . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate Options Menu ( menu , Ġinflater ) ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . options _ menu , menu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġhook Ġis Ġcalled Ġwhenever Ġan Ġitem Ġin Ġyour Ġoptions Ġmenu Ġis Ġselected . ĠWe Ġreturn Ġthe Ġresult ĊĠĠĠĠ Ġ* Ġof Ġcalling Ġthe Ġ[ Navigation UI . on Nav Destination Selected ] Ġmethod Ġwith Ġour Ġ[ MenuItem ] Ġparameter ĊĠĠĠĠ Ġ* Ġ[ item ] Ġand Ġthe Ġ` Nav Controller ` Ġassociated Ġwith Ġthe Ġroot Ġ[ View ] Ġof Ġour Ġ[ Fragment ] Ġ( this ĊĠĠĠĠ Ġ* Ġmethod Ġwill Ġtry Ġto Ġnavigate Ġto Ġthe Ġfragment Ġwhose ĠID Ġis Ġthe Ġsame Ġas Ġthe Ġitem ĠID Ġof Ġ[ item ] ĊĠĠĠĠ Ġ* Ġwhich Ġin Ġour Ġcase Ġis Ġ` about Fragment `). ĠIf Ġit Ġwas Ġable Ġto Ġnavigate Ġto Ġthe Ġdestination ĊĠĠĠĠ Ġ* Ġassociated Ġwith Ġthe Ġgiven ĠMenuItem Ġit Ġreturns Ġ` true ` Ġwhich Ġwe Ġreturn Ġto Ġour Ġcaller , Ġif Ġit ĊĠĠĠĠ Ġ* Ġfails Ġit Ġreturns Ġ` false ` Ġand Ġwe Ġreturn Ġthe Ġvalue Ġreturned Ġby Ġour Ġsuper 's Ġimplementation Ġof ĊĠĠĠĠ Ġ* Ġ` on Options ItemSelected `. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġitem ĠThe Ġmenu Ġitem Ġthat Ġwas Ġselected . ĊĠĠĠĠ Ġ* Ġ@ return Ġ[ Boolean ] ĠReturn Ġ` false ` Ġto Ġallow Ġnormal Ġmenu Ġprocessing Ġto ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠ Ġproceed , Ġ` true ` Ġto Ġconsume Ġit Ġhere . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠNavigation UI . on Nav Destination Selected ( item , Ġrequire View (). find Nav Controller ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| super . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ