package Ġcom . example . android . track mys leep quality . sleep detail Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġcom . example . android . track mys leep quality . R Ċ import Ġcom . example . android . track mys leep quality . convert Duration To Formatted Ċ import Ġcom . example . android . track mys leep quality . convert Numeric Quality ToString Ċ import Ġcom . example . android . track mys leep quality . database . Sleep Database Ċ import Ġcom . example . android . track mys leep quality . databinding . Fragment Sleep Detail Binding Ċ import Ġcom . example . android . track mys leep quality . sleep quality . Sleep Quality Fragment Args ĊĊ Ċ /** Ċ Ġ* ĠA Ġsimple Ġ[ Fragment ] Ġsubclass . Ċ Ġ* ĠActiv ities Ġthat Ġcontain Ġthis Ġfragment Ġmust Ġimplement Ġthe Ċ Ġ* Ġ[ Sleep Detail Fragment . On Fragment Interaction Listener ] Ġinterface Ċ Ġ* Ġto Ġhandle Ġinteraction Ġevents . Ċ Ġ* ĠUse Ġthe Ġ[ Sleep Detail Fragment . newInstance ] Ġfactory Ġmethod Ġto Ċ Ġ* Ġcreate Ġan Ġinstance Ġof Ġthis Ġfragment . Ċ Ġ* Ċ Ġ*/ Ċ class ĠSleep Detail Fragment Ġ: ĠFragment ( R . layout . fragment _ sleep _ detail ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġa Ġreference Ġto Ġthe Ġbinding Ġobject Ġand Ġinf late Ġthe Ġfragment Ġviews . ĊĠĠĠĠĠĠĠ Ġval Ġview Binding Ġ= ĠFragment Sleep Detail Binding . bind ( view ) ĊĊĠĠĠĠĠĠĠ Ġval Ġapplication Ġ= Ġrequire NotNull ( this . activity ). application ĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= ĠSleep Detail Fragment Args . from Bundle ( require Arguments ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġan Ġinstance Ġof Ġthe ĠViewModel ĠFactory . ĊĠĠĠĠĠĠĠ Ġval ĠdataSource Ġ= ĠSleep Database . getInstance ( application ). sleep Database Dao ĊĠĠĠĠĠĠĠ Ġval ĠviewModel Factory Ġ= ĠSleep Detail ViewModel Factory ( arguments . sleep Night Key , ĠdataSource ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġa Ġreference Ġto Ġthe ĠViewModel Ġassociated Ġwith Ġthis Ġfragment . ĊĠĠĠĠĠĠĠ Ġval ĠviewModel Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewModel Provider ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĠviewModel Factory ). get ( Sleep Detail ViewModel :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAdd Ġan ĠObserver Ġto Ġthe Ġstate Ġvariable Ġfor ĠNavig ating Ġwhen Ġa ĠQuality Ġicon Ġis Ġt apped . ĊĠĠĠĠĠĠĠ ĠviewModel . navigate To Sleep Tracker . observe ( view Lifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ== Ġtrue ) Ġ{ Ġ// ĠOb served Ġstate Ġis Ġtrue . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . find Nav Controller (). navigate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSleep Detail Fragment Directions . action Sleep Detail Fragment To Sleep Tracker Fragment ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠReset Ġstate Ġto Ġmake Ġsure Ġwe Ġonly Ġnavigate Ġonce , Ġeven Ġif Ġthe Ġdevice ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhas Ġa Ġconfiguration Ġchange . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . done Navig ating () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . get Night (). observe ( view Lifecycle Owner ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . quality Image . setImage Resource ( when Ġ( it . sleep Quality ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> ĠR . drawable . ic _ sleep _ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> ĠR . drawable . ic _ sleep _ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> ĠR . drawable . ic _ sleep _ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> ĠR . drawable . ic _ sleep _ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġ-> ĠR . drawable . ic _ sleep _ 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 5 Ġ-> ĠR . drawable . ic _ sleep _ 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠR . drawable . ic _ sleep _ active ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . quality String . text Ġ= Ġconvert Numeric Quality ToString ( it . sleep Quality , Ġresources ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . sleep Length . text Ġ= Ġconvert Duration To Formatted ( it . startTime Milli , Ġit . endTime Milli , Ġresources ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġview Binding . close Button . setOnClickListener Ġ{ ĠviewModel . onClose () Ġ} ĊĠĠĠ Ġ} Ċ }