package Ġcom . sample . base Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . databinding . ViewData Binding Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . navigation . Nav Options Ċ import Ġandroidx . navigation . fragment . Fragment Navigator Ċ Ċ import Ġorg . jetbrains . ank o . support . v 4 . alert Ċ import Ġtim ber . log . Tim ber ĊĊ Ċ abstract Ġclass ĠBase Fragment < Binding Type Ġ: ĠView Data Binding , Ġout ĠViewModel Type : ĠBase ViewModel > Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġvar ĠTAG Ġ= Ġthis . java Class . simple Name ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠView Data Binding Ġtip inde ki Ġgeneric Ġtype , Ġchild 'd an Ġg onder ili yor . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġlateinit Ġvar Ġbinding : ĠBinding Type ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBase ViewModel Ġtip inde ki Ġgeneric Ġtype , Ġchild 'd an Ġg onder ili yor ĊĠĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġval ĠviewModel : ĠViewModel Type ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġlayout Id , Ġchild 'd a Ġt anim lan iy or ĊĠĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġabstract Ġval Ġlayout Id : ĠInt ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ĠFragment ' a Ġo zel Ġview Ġdu zen leme leri Ġbur ada Ġyap ili yor ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġfun Ġprepare Views () ĊĊĠĠĠ Ġprivate Ġvar Ġbase Activity : ĠBase Activity < *, Ġ* >? Ġ= Ġnull ĊĊĠĠĠ Ġopen Ġval Ġbackground Res Id : ĠInt Ġ= Ġ 0 Ġ// R . color . material _ grey _ 1 0 0 ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . inflate ( in flater , Ġlayout Id , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġbase Activity Ġ= Ġactivity Ġas ĠBase Activity < *, Ġ* >? ĊĠĠĠĠĠĠĠ Ġprepare Views () ĊĠĠĠĠĠĠĠ Ġprepare Handler () ĊĠĠĠĠĠĠĠ Ġsubscribe () ĊĠĠĠĠĠĠĠ Ġsubscribe Errors () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprepare Handler () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . lifecycle Owner Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġinit Binding Variables () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġset On Back Pressed ( null ) Ġ// ĠAdd Ġthis ĊĠĠĠĠĠĠĠ Ġchange Fragment Background ( background Res Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġbase Activity ?. show Hide Progress ( false ) ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġset On Back Pressed ( on Back Alternative : Ġ(() Ġ-> ĠUnit )? ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠBase Activity < *, Ġ*> ). on Back Press Alternative Ġ= Ġon Back Alternative ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ĠXML Ġic er is inde ki Ġde gis ken in Ġt anim lan mas i ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġinit Binding Variables () Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . e (" Not Ġhave Ġa Ġbinding Ġvariable ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsubscribe Errors () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . network Error Detection . observe This Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Resource Ġ= ĠR . string . h ata ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositive Button ( android . R . string . ok ) Ġ{ Ġit . dismiss () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . loading Detection . observe This Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtim ber (" viewModel . loading Detection : Ġ$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Activity ?. show Hide Progress ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġchange Fragment Background ( res Id : ĠInt , Ġis Color : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbase Activity ?. change Background ( res Id , Ġis Color ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġsubscribe () Ġ{ ĊĠĠĠĠĠĠĠ Ġtim ber (" Not Ġhave Ġa Ġsubscription ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġon Back Alternative (): Ġ(() Ġ-> ĠUnit )? Ġ{ ĊĠĠĠĠĠĠĠ Ġtim ber (" Not Ġhave Ġa Ġspecial Ġon Back Ġfunction ") ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Binary Operation In Tim ber ", Ġ" Log Not Tim ber ") ĊĠĠĠ Ġfun Ġtim ber ( message : ĠString , Ġobjects Ar : ĠArray < String >? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . d (" Tim ber Log : Ġ$ message ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset FullScreen ( is FullScreen : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġflags Ġ= Ġif Ġ( is FullScreen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ ST ABLE Ġor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ HIDE _ NAV IG ATION Ġor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ FULL SCREEN Ġor ĠView . SYSTEM _ UI _ FLAG _ HIDE _ NAV IG ATION Ġor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ FULL SCREEN Ġor ĠView . SYSTEM _ UI _ FLAG _ IM MER SIVE _ STICK Y ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġactivity ?. window ?. decor View ?. system Ui Visibility Ġ= Ġflags ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhide Keyboard () Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimm Ġ= ĠContext Compat . getSystem Service ( it , ĠInput Method Manager :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimm ?. hide Soft Input From Window ( view ?. root View ?. window Token , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġnavigate Fragment ( ĊĠĠĠĠĠĠĠ Ġnav Action : ĠInt , ĊĠĠĠĠĠĠĠ Ġbundle : ĠBundle ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġnav Options : ĠNav Options ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġextras : ĠFragment Navigator . Extras ? Ġ= Ġnull ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbase Activity ?. navigate Fragment ( nav Action , Ġbundle , Ġnav Options , Ġextras ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġ< T > LiveData < T >. observe This ( function : Ġ( T ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġobserve ( view Lifecycle Owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfunction ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ